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()
只会加载关系而不是过滤结果。
所以我有 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()
只会加载关系而不是过滤结果。