使用 laravel 10 使用 where、wherehas 或Where 过滤查询

问题描述 投票:0回答:1

请教朋友,我做了一个这样的表格=

表格调整 = 'id','调整编号', '状态'。

然后调整表有一个我命名为materialloc的关系,然后还有另一个关系到sbin。

然后我使用 Laravel 10 创建了一个这样的查询程序

$query = Adjustment::with('materialloc.sbin');
         
if ($request->has('search') && $request->input('search')) {
    $searchTerm = $request->input('search');
    $query->whereHas('materialloc.sbin', function ($query) use ($searchTerm) {
        $query->where('name', 'like', '%' . $searchTerm . '%');
    });
    $query->orWhere('adjustment_number', 'like', '%' . $searchTerm . '%');
}

为什么使用 adjustment_number 搜索不起作用?

但是当我在materialloc.sbin中按名称搜索时它可以工作,我使用的whereHas,where或orWhere有什么问题吗?

请各位朋友帮忙

laravel eloquent laravel-10
1个回答
0
投票

您需要将

whereHas
orWhere
合并到公共搜索中:

$query = Adjustment::with('materialloc.sbin');
         
if ($request->has('search') && $request->input('search')) {
    $searchTerm = $request->input('search');
    $query->where(function ($q) use ($searchTerm) {
        $q->whereHas('materialloc.sbin', function ($query) use ($searchTerm) {
            $query->where('name', 'like', '%' . $searchTerm . '%');
        });
        $q->orWhere('adjustment_number', 'like', '%' . $searchTerm . '%');
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.