2016-12-10 21 views
0

join句には、これを指定してクエリビルダを使用して生の式を書き込む方法はありますか。LaravelクエリビルダのRaw式

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

*まだ「共同」アプローチを使用することを検討する必要があります。あなたの現行のアプローチで得たエラーだけでなく、あなたのシナリオを再現するのに十分な情報をポストで更新してください。* – nyedidikeke

答えて

0

私は好奇心から求めている->join(DB()->raw('select...')

関連する問題