コメント数付きのニュース一覧みたいなものを取得したい
記事 ------------- コメント
news1 ---------------- 10
news2 ---------------- 2
ニュース3 ---------------- 13
ニュース4 ---------------- 25
生のSQLでそれを行う方法は知っていますが、laravelでは作成できません。laravel は生のクエリを処理できますが、クエリ全体に使用したくありません。
ここに私の現在の切り取られたコードがあります:
$newslist = News::where('status_id', 2)->orderBy('id', 'desc')->skip(0)->take($itemPerLoad)
->join('msuser', 'msuser.id', '=', 'news.user_id')
->select(....)->get();
selectメソッドにカウントを入れようとしましたが、エラーが発生しました(上に書かれていないようにコメントテーブルに参加しています)
->select('news.id', 'count(mscomment.id) as commented', ...)
私は参加できないので、現在は別のコードを使用してカウントし、json 応答に設定しています
$commented = Comment::where('news_id', $news->id)->count();
ループごとにカウントを要求するため、数値を取得するのは良い方法ではないと思います