У меня проблема, которую я не знаю, как ее решить. У меня есть компании, у которых есть профиль (профиль принадлежит компании), и у него есть места (у компании много мест).Laravel 5.1 - Запрос нескольких отношений
Я пытаюсь получить все компании, которые имеют имя, как $request->input('search_term')
и имеют наименьшую одно место с застежкой-молнией или города, соответствующего $request->input('search_addition')
и профиль с типом 0.
Мой код:
$companies = Company::with(['profile' => function ($query) {
$query->where('type', 0);
}])
->whereHas('locations', function ($query) use ($request) {
$query->where('zip', 'like', '%'.$request->input('search_addition').'%')
->orWhere('city', 'like', '%'.$request->input('search_addition').'%');
})
->where('name', 'like', '%'.$request->input('search_term').'%');
в конце добавить $companies = $companies->paginate(25);
в результате я получаю не то, что я хочу. Я получаю все компании, у которых есть такое имя, как $request->input('search_term')
. Он игнорирует тип профиля и местоположения. Массив местоположений пуст для тех компаний, которые не соответствуют указанному запросу search_addition, но он по-прежнему возвращает компанию.
Это не работает, к сожалению. Вернемся к чертежной доске. Однако ваш намек на «с» был хорош. Возможно, я смогу решить проблему таким образом. –