如何使用 Laravel 在 LIKE 搜索中使用 ORM 从两个表中获取数据
How to fetch data from two tables using ORM in LIKE search using Laravel
这是我的控制器代码:
public function searchUser(Request $request)
{
$pram = $request->name;
$data['users'] = User::whereHas('userBasicInfo', function ($query) use ($pram) {
$query->where('first_name', 'like', '%' . $pram . '%')
->orWhere('middle_name', 'like', '%' . $pram . '%')
->orWhere('last_name', 'like', '%' . $pram . '%');
})->with(['userBasicInfo' => function ($query) use ($pram) {
$query->where('first_name', 'like', '%' . $pram . '%')
->orWhere('middle_name', 'like', '%' . $pram . '%')
->orWhere('last_name', 'like', '%' . $pram . '%');
}])->get();
return $data;
}
我有用户与userBasicInfo的关系;我可以使用 first_name、middle_name 和 last_name 进行搜索,我的请求参数是 name.
现在我想用用户邮箱搜索,请求参数多了一个邮箱,邮箱在用户里面table。
我如何也可以使用用户电子邮件进行搜索?
试一试
$data['users'] = User::with('userBasicInfo')
->where('email', 'like', '%' . $pram . '%') //this is from use table
->orWhereHas('userBasicInfo', function($query) use($pram) {
//search in basic info table
$query->where('first_name', 'like', '%' . $pram . '%')
->orWhere('middle_name', 'like', '%' . $pram . '%')
->orWhere('last_name', 'like', '%' . $pram . '%');
})
->get();
您不需要从搜索表单发送不同的值。可以使用单个值作为搜索值。
这是我的控制器代码:
public function searchUser(Request $request)
{
$pram = $request->name;
$data['users'] = User::whereHas('userBasicInfo', function ($query) use ($pram) {
$query->where('first_name', 'like', '%' . $pram . '%')
->orWhere('middle_name', 'like', '%' . $pram . '%')
->orWhere('last_name', 'like', '%' . $pram . '%');
})->with(['userBasicInfo' => function ($query) use ($pram) {
$query->where('first_name', 'like', '%' . $pram . '%')
->orWhere('middle_name', 'like', '%' . $pram . '%')
->orWhere('last_name', 'like', '%' . $pram . '%');
}])->get();
return $data;
}
我有用户与userBasicInfo的关系;我可以使用 first_name、middle_name 和 last_name 进行搜索,我的请求参数是 name.
现在我想用用户邮箱搜索,请求参数多了一个邮箱,邮箱在用户里面table。
我如何也可以使用用户电子邮件进行搜索?
试一试
$data['users'] = User::with('userBasicInfo')
->where('email', 'like', '%' . $pram . '%') //this is from use table
->orWhereHas('userBasicInfo', function($query) use($pram) {
//search in basic info table
$query->where('first_name', 'like', '%' . $pram . '%')
->orWhere('middle_name', 'like', '%' . $pram . '%')
->orWhere('last_name', 'like', '%' . $pram . '%');
})
->get();
您不需要从搜索表单发送不同的值。可以使用单个值作为搜索值。