0
私はテーブルの記事を持っており、それがフィールドarticle_id
を持っており、私の機能で、私は$request['option']
で、関連するテーブルの名前を送っていたテーブルcomments
、views
とlikes
関連だ、のコメントたとえば、ajaxを使用して、最も多くコメントされている上位5件の記事を取得します。しかし私の関数では、article_ids
とcounts
というクエリ結果から得ています。そしてforeachループで結果を繰り返して、article_id
という記事オブジェクトを取得しています。私は、最初のクエリの各結果に対してそのクエリを実行しないようにしたいと思います。それをもっとエレガントに、またDBへの呼び出しが何もないようにする方法は何でしょうか?Laravelクエリ - 関連テーブルから取得したオブジェクトとそのカウント
これは私のコードです:
public function mostArticle(Request $request) {
$from = $request['from'];
$to = $request['to'];
$result = DB::table($request['option'])
->select(DB::raw('article_id'), DB::raw('count(*) as count'))
->whereDate('created_at', '>=', date($from).' 00:00:00')
->whereDate('created_at', '<=', date($to).' 00:00:00')
->groupBy('article_id')
->orderBy('count', 'DESC')
->take(5)
->get();
foreach($result as $val){
$article = Article::where('id', $val->article_id)->first();
$mostSomethingArticle[$article->id] = [];
$mostSomethingArticle[$article->id]['title'] = $article->title;
$mostSomethingArticle[$article->id]['summary'] = $article->summary;
$mostSomethingArticle[$article->id]['count'] = $val->count;
}
return json_encode($mostSomethingArticle);
}