【问题标题】:Laravel with() and search using LIKE not workingLaravel with() 和使用 LIKE 搜索不起作用
【发布时间】:2021-03-09 13:56:41
【问题描述】:

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

我有以下几点:

    $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');
}

这很好用,除了搜索,如果我尝试按类别名称过滤它仍然会返回所有内容。

【问题讨论】:

    标签: php laravel api lumen


    【解决方案1】:

    试试

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

    而不是

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-20
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 2017-03-15
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      相关资源
      最近更新 更多