我到目前为止:
return \App\Project::with('likes')->get()->sortByDesc(function($project) {
return $project->likes->count();
})->lists(['title', 'likes']);
期望的结果是:
array('Some title' => 43, 'Some other title' => 11)
这是否可以通过Eloquent实现?或者我应该建立一个数组'manually'
?
修改
基本上,我想实现以下目标:
\DB::table('projects')
->join('likes', 'projects.id', '=', 'likes.project_id')
->select(\DB::raw('title, count(likes.id) as likes'))
->groupBy('projects.id')
->get();
但Eloquent
方式..
我还尝试设置getLikesCountAttribute
方法,现在我可以这样做:
\App\Project::all()->sortByDesc('likesCount')->lists('likesCount', 'title');
工作正常,但正如你所看到的 - 这样我必须首先检索所有记录,然后使用魔术getLikesCountAttribute
方法获得该计数。也许不是那么大的交易,不知道......