我有两个嵌套关系,一个是 requester.link
和 requester.company
,我都想搜索 $request->search
词。
代码是自我解释的:
$clients = AppAcceptedConnection::with('requester.link', 'requester.company')
->where('accepter_id', Auth::user()->id)
->orWhereHas('requester.link', function ($query) use ($request) {
$query->orWhere('name', $request->search);
})->orWhereHas('requester.company', function ($query) use ($request) {
$query->orWhere('email', $request->search);
$query->orWhere('firstname', $request->search);
$query->orWhere('lastname', $request->search);
})->get();
它为我提供了任何搜索内容的记录,它返回记录,即使搜索不匹配,搜索任何内容,它将为您提供记录,
我缺少什么?
您正在检查 accepter_id=Auth::user()->id
还是录音与您的搜索词相匹配。
您必须将whereHas()
检查包含在封闭中:
$clients = AppAcceptedConnection::with('requester.link', 'requester.company')
->where('accepter_id', Auth::user()->id)
->where(function($query) use ($request) {
$query->whereHas('requester.link', function ($query) use ($request) {
$query->orWhere('name', $request->search);
})->orWhereHas('requester.company', function ($query) use ($request) {
$query->orWhere('email', $request->search);
$query->orWhere('firstname', $request->search);
$query->orWhere('lastname', $request->search);
});
})->get()