首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相关$query->with但"pick properties as“

相关$query->with但"pick properties as“
EN

Stack Overflow用户
提问于 2017-11-10 19:18:20
回答 1查看 27关注 0票数 0

我用的是Laravel 5.5.13。

我试图获取所有扩展,但根据它们之间的关系使用某些额外的属性。

我的目标是获取这样的数据,我正在尝试获取latest_comment_datethumbs_countthumbs_yes_count

代码语言:javascript
复制
[
    {
        "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
    }
]

我试过这个:

代码语言:javascript
复制
        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();

这给了我这样的数据:

代码语言:javascript
复制
[
    {
        "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": []
    }
]

你能不能帮我“挑选”我在最上面展示的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-10 19:49:05

对于计数,您应该像这样使用withCount

代码语言:javascript
复制
return Extension::withCount(
                'thumbs', 
                'thumbs as thumbs_yes_count' => function($query) {
                   $query->where('like', '=', true);
               })->get();

参考资料:计数相关模型

对于最新的评论,你应该建立如下的额外关系:

代码语言:javascript
复制
public function latestComment()
{
   return $this->hasOne(Comment::class)->orderBy('created_at', 'desc');
}

所以整个代码看起来是这样的:

代码语言:javascript
复制
return Extension::with('latestComment')->withCount(
                'thumbs', 
                'thumbs as thumbs_yes_count' => function($query) {
                   $query->where('like', '=', true);
               })->get();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47229747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档