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')
を使用して正常に照会することができました - あなたはどのような種類のSQLを知っているのですか、Laravelを扱う方法を知っています - 単にMySQLビューを作成し、ビューを読み込んでLaravelにこの複雑なクエリを移植することを完全に放棄するモデルを作るのはなぜですか?実行可能ですが、ビューを作成するには、 'SELECT'の前に' CREATE VIEW view_name AS ... 'を追加するだけで3秒かかるでしょうから、5秒かかるでしょう。そこから読み取るEloquentモデルを作成します。合計で、あなたの時間の10秒未満です。 –
ところで:あなたはどんなエラーを受け取っていますか?私は@ N.Bによって示唆されたような上記のアプローチを使用していたでしょう。単純化のためではなく、経験とパフォーマンスを向上させました。それ以外の理由がある場合を除き、これが私がお勧めする最良の方法です。 – nyedidikeke
*まだ「共同」アプローチを使用することを検討する必要があります。あなたの現行のアプローチで得たエラーだけでなく、あなたのシナリオを再現するのに十分な情報をポストで更新してください。* – nyedidikeke