Php 在Laravel中使用雄辩时的麻烦排序
我有两个表:Php 在Laravel中使用雄辩时的麻烦排序,php,laravel,eloquent,Php,Laravel,Eloquent,我有两个表:书籍,用户(多对多关系) 用户将跟随书籍并将数据保存在透视表中:跟随(id,User\u id,manga\u id) 如何计算每本书的跟随者总数并按其排序?使用以下代码,您可以通过数组获得每本书的跟随者 $books=DB::table('books')->get(); $total_follows=array(''); foreach($books as $book) $total_follows[$book->id]=DB::table('pivot')-&
书籍
,用户
(多对多关系)
用户将跟随书籍并将数据保存在透视表中:跟随(id
,User\u id
,manga\u id
)
如何计算每本书的跟随者总数并按其排序?使用以下代码,您可以通过数组获得每本书的跟随者
$books=DB::table('books')->get();
$total_follows=array('');
foreach($books as $book)
$total_follows[$book->id]=DB::table('pivot')->where('manga_id',$book->id)->count();
echo$total_如下[$the_book_id_you_所需] 假设您已经建立了模型和关系
$books = Book::with('users')->get()
->sortByDesc(function($model){
return $model->users->count();
});
(用户
这是关系的名称,如果您有不同的名称,请将其替换)连接将是性能最好的,因此您应该这样做:
Book::join('follows', 'follows.manga_id', '=', 'books.id')
->join('users', 'users.id', '=', 'follows.user_id')
->selectRaw('books.*, count(users.id) as follows_count')
->groupBy('books.id')
->orderBy('follows_count')
->get();