ちょっと私は、データベースからトレンド記事を返すクエリを開発しようとしています。トレンド検索クエリ - Laravel Eloquent
トレンド記事は過去24時間のほとんどのビューに基づいています。ここでのコードは、これまでのところです:
$trending = Article::whereHas('view', function ($query) {
$query->where('created_at', '>=', Carbon::now()->subHours(24));
})
->with('view')
->orderBy('created_at', 'DESC')
->get();
return $trending;
}
記事のモデルは次のような関係があります。
public function view()
{
return $this->hasMany('ArticleView', 'article_id');
}
クエリは動作しますが、私は何とかもビュー数で記事をソートする必要があります。例えば、現在のトレンド記事が表示されますが、ほとんどのビュー数とartticlesは、最初から最後まで注文されていません(当然 - 彼らはcreated_atとされたものです)
ヘルプ
を高く評価
記事の閲覧回数を格納している列がありますか。 ( 'number_views'、 'DESC') –
「one-to-many」を指定すると、1つの記事の各ビューに1つの行が表示されているように見えます関係。理想的には、1つのクエリでビューの数をカウントし、後者を実際のアーティクルクエリにインナーで結合する必要があります。 – Mysteryos
はいarticle_id、ipアドレス&created_atを格納するarticle_viewsテーブルがあります – Josh