Laravel with() 和使用 LIKE 搜索不起作用

Laravel with() and search using LIKE not working

所以我有 2 个 table,1 个 table 用于存储债务(id,金额,category_id)和 1 个 table 用于存储债务类别(id,姓名)。我试图从债务中提取每个月的数据 table,但我也有一个似乎不起作用的搜索,我想我遗漏了一些东西。

我有以下内容:

    $debt = $this->debtModel
        ->select(DB::raw('MONTH(created_at) as month'), DB::raw('SUM(amount) as amount'), 'category_id')
        ->where('user_id', Auth::user()->id)
        ->whereYear('created_at', $year)
        ->with(['category' => function ($query) use ($filter) {
            $query->where('name', 'like', "%$filter%");
        }])
        ->orderBy('month', 'asc')
        ->groupBy('month')
        ->groupBy('category_id')
        ->get();

债务模型:

public function category()
{
    return $this->hasOne('App\Models\DebtCategory', 'id', 'category_id');
}

这工作正常,除了搜索,如果我尝试按类别名称过滤它仍然 returns 一切。

试试

->whereHas('category' , function ($query) use ($filter) {
            $query->where('name', 'like', "%$filter%");
        })

而不是

->with(['category' => function ($query) use ($filter) {
            $query->where('name', 'like', "%$filter%");
        }])

with() 只会加载关系而不是过滤结果。