首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel whereHas返回意外结果

Laravel whereHas返回意外结果
EN

Stack Overflow用户
提问于 2017-08-09 16:03:27
回答 1查看 873关注 0票数 0

我的问题是:

代码语言:javascript
复制
Description::whereHas('expenses', function($query) {
        $query->where('date', $this->date);
    })->with('expenses')->get();

上面的查询返回给定日期的所有描述,但它返回该描述的所有费用,而不是给定日期的费用。我不能理解为什么会这样,我想首先理解这一点。这是因为with('expenses')吗?我只是急于加载每个描述的所有费用?使用whereHas,我只返回在给定日期至少有一项费用的所有描述?

如果以上所有情况都为真,我如何返回给定日期的所有描述,包括给定日期的费用?

描述模型:

代码语言:javascript
复制
public function expenses()
{
    return $this->hasMany(Expense::class);
}

费用模型:

代码语言:javascript
复制
public function description()
{
    return $this->belongsTo(Description::class);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-09 16:09:34

您只需要过滤应该加载哪些Description对象。您应该将相同的过滤器应用于即时加载,以便只将这些内容添加到模型中。

代码语言:javascript
复制
Description::whereHas('expenses', function($query) {
        $query->where('date', $this->date);
    })
    ->with([
        'expenses' => function($query) {
            $query->where('date', $this->date);
        }
    ])
    ->get();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45584941

复制
相关文章

相似问题

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