Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel中使用雄辩时的麻烦排序_Php_Laravel_Eloquent - Fatal编程技术网

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();