2016-12-10 2 views
0

쿼리 작성기를 사용하여 join 절에 원시 식을 쓰려면 어떻게해야합니까?Laravel 쿼리 작성기 원시 식

SELECT 
    rating.post_id, 
    sum(rate_like), 
    sum(rate_dislike), 
    (sum(rate_like) + sum(rate_dislike)), 
    column_rating 
from rating 
inner join (
    select 
     post_id, 
     round(round((((sum(rate_like)/(sum(rate_like) + sum(rate_dislike)) * 100) * 0.5)/10) * 2)/2, 1) as column_rating 
    from rating group by post_id 
) as rating_table 
on rating.post_id = rating_table.post_id 
group by rating.post_id 

내가 그것을 다음과 같은 방법을 달성하려했지만, 그것이 작동하지 않습니다

DB::table('db_test')->table('rating') 
        ->join('rating_table', 'select ... from rating as rating_table') 
        ->raw('rating.post_id, 
          sum(rate_like), 
          sum(rate_dislike), 
          (sum(rate_like) + sum(rate_dislike)), 
          column_rating') 
+1

사용하여 쿼리 할 수 ​​있었다 - 당신이 알고있는 SQL의 종류를 알고 있다면 Laravel을 다루는 방법을 알 수 있습니다. 단순히 MySQL보기를 생성하고보기를 읽고 완전히 복잡한 쿼리를 Laravel로 포팅하는 것을 포기하는 모델을 만드는 것이 어떨까요? 그것은 할 수 있겠지만, 그 일은 -보기를 만들려면,'SELECT' 앞에'CREATE VIEW view_name AS ... '를 추가하면 3 초를 소비하게되므로 5 초를 소비하게됩니다. 그것에서 읽는 Eloquent 모델을 만드는 코드. 총 시간은 10 초 미만입니다. –

+0

현재 : 어떤 오류가 발생합니까? @ N.B에서 제안한대로 위의 방법을 사용했을 것입니다. 단순함이 아니라 경험과 성능이 향상되었습니다. 달리해야 할 특별한 이유가 없다면, 그것은 제가 똑같이 추천할만한 최선의 방법입니다. – nyedidikeke

+0

* 여전히 '공동 (joint)'접근 방식을 사용하는 것이 좋을지 모르겠지만, 현재 접근법으로 얻은 오류와 더 자세하게 볼 수 있도록 시나리오를 복제 할 수있는 충분한 정보로 게시물을 업데이트하십시오. * – nyedidikeke

답변

0

을 나는 성공적으로 내가 호기심 부탁 해요 ->join(DB()->raw('select...')