按关系计数订购一个Eloquent模型,然后取出该计数

时间:2016-05-08 01:35:38

标签: laravel eloquent

我到目前为止:

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方法获得该计数。也许不是那么大的交易,不知道......

0 个答案:

没有答案