我用的是Laravel 5.5.13。
我试图获取所有扩展,但根据它们之间的关系使用某些额外的属性。
我的目标是获取这样的数据,我正在尝试获取latest_comment_date、thumbs_count和thumbs_yes_count
[
{
"id": 3,
"name": "Pull Refresh",
"created_at": "2017-11-10 06:04:44",
"updated_at": "2017-11-10 06:04:44",
"latest_comment_date": "2017-11-10 05:46:25",
"thumbs_count": 10,
"thumbs_yes_count": 2
}
]我试过这个:
return Extension::with([
'comments' => function($query) { // rename to 'latest_comment_date'
$query->orderBy('created_at', 'desc')->take(1);
},
'thumbs' => function($query) { // rename to 'thumbs_count'
$query->count();
},
'thumbs' => function($query) { // rename to 'thumbs_yes_count'
$query->where('like', '=', true)->count();
}
])->get();这给了我这样的数据:
[
{
"id": 3,
"name": "Pull Refresh",
"created_at": "2017-11-10 06:04:44",
"updated_at": "2017-11-10 06:04:44",
"comments": [
{
"id": 10,
"body": "heck ya baby",
"displayname_id": 2,
"extension_id": 3,
"created_at": "2017-11-10 18:31:31",
"updated_at": "2017-11-10 18:31:31"
}
],
"thumbs": []
}
]你能不能帮我“挑选”我在最上面展示的东西?
发布于 2017-11-10 19:49:05
对于计数,您应该像这样使用withCount:
return Extension::withCount(
'thumbs',
'thumbs as thumbs_yes_count' => function($query) {
$query->where('like', '=', true);
})->get();参考资料:计数相关模型
对于最新的评论,你应该建立如下的额外关系:
public function latestComment()
{
return $this->hasOne(Comment::class)->orderBy('created_at', 'desc');
}所以整个代码看起来是这样的:
return Extension::with('latestComment')->withCount(
'thumbs',
'thumbs as thumbs_yes_count' => function($query) {
$query->where('like', '=', true);
})->get();https://stackoverflow.com/questions/47229747
复制相似问题