У меня есть два вложенных отношения: One is requester.link
и requester.company
, я хочу, чтобы оба искали слово $request->search
.
Код сам по себе поясняет:
$clients = \App\AcceptedConnection::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()
проверки whereHas()
в закрытие:
$clients = \App\AcceptedConnection::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()