Php Laravel whereHas返回意外结果

Php Laravel whereHas返回意外结果,php,laravel,Php,Laravel,我的问题是: Description::whereHas('expenses', function($query) { $query->where('date', $this->date); })->with('expenses')->get(); 上面的查询返回给定日期的所有描述,但返回该描述的所有费用,而不是给定日期的费用。我无法理解这是为什么,我想首先理解这一点。这是因为带有('expenses')的我只是急于加载每个描述的所有费用?我从哪

我的问题是:

Description::whereHas('expenses', function($query) {
        $query->where('date', $this->date);
    })->with('expenses')->get();
上面的查询返回给定日期的所有描述,但返回该描述的所有费用,而不是给定日期的费用。我无法理解这是为什么,我想首先理解这一点。这是因为带有('expenses')的
我只是急于加载每个描述的所有费用?我从哪里返回了在给定日期至少有一笔费用的所有描述

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

描述模型:

public function expenses()
{
    return $this->hasMany(Expense::class);
}
费用模型:

public function description()
{
    return $this->belongsTo(Description::class);
}

您仅筛选应加载的
说明
对象。您应该对即时加载应用相同的过滤器,以便只将这些过滤器添加到模型中

Description::whereHas('expenses', function($query) {
        $query->where('date', $this->date);
    })
    ->with([
        'expenses' => function($query) {
            $query->where('date', $this->date);
        }
    ])
    ->get();

您仅筛选应加载的
说明
对象。您应该对即时加载应用相同的过滤器,以便只将这些过滤器添加到模型中

Description::whereHas('expenses', function($query) {
        $query->where('date', $this->date);
    })
    ->with([
        'expenses' => function($query) {
            $query->where('date', $this->date);
        }
    ])
    ->get();
可能的重复可能的重复