結果の並べ替え/並べ替えに問題があります。 基本的に私は投稿テーブルを持っています、そして、私はpopularity_countをいくつ持っていますか?私は結果に改ページもしています。私はこのLaravel - PopularityCount属性 - オーダーBy
$Posts->paginate(5);
$Posts->sortBy('popularity_count');
$Posts->get();
ようなものを使用する場合ので それは例えばので、特定のページのみのためにソートされます。 1ページ目は6,5,4,3,2のような人気数の結果があり、2ページ目には10,7,5,2,1があります。ご覧のとおり、人気がある投稿はであり、最初のページの最初の結果である必要があります。
私はこのように私のデータベース内の列を持っていないとして、それは動作しません
$Posts->orderBy('popularity_count')
を使用するようにしてください。 RAWの選択と結合を使わずに私が望むものを達成する可能性はありますか?私は自分のモデルにさらにカスタム属性を持っています。
ありがとうございます!
編集:
`public function getPopularityCountAttribute(){
$comments = $this->getRelation('commentsCount');
$likes = $this->getRelation('likesCount');
$comments = ($comments) ? (int) $comments->comments_count : 0;
$likes = ($likes) ? (int) $likes->likes_count : 0;
$Result = $likes + ($comments * 1.2);
return $Result;
}`
私はクエリを書く方法がわかりません。 – Sherif