Laravel 5.3 Расширенный поиск
В моем проекте Laravel 5.3 у меня есть форма с одним текстовым полем (ключевые слова) и двумя выпадающими списками (категория и местоположение). Я пытаюсь создать предложение select в моем контроллере, но оно не работает, когда я указываю куда для table_1.category или table_1.location.
$keys = \Request::get('keyword');
$category = \Request::get('category');
$location = \Request::get('location');
$myrecord = mytable_1::join('table_2', 'table_2.user_id', '=', 'table_1.user_id')
->where(function ($query) {
$keys = \Request::get('keyword');
$query->where('table_1.title', 'like','%'.$keys.'%')
->orWhere('table_2.company', 'like','%'.$keys.'%');
})
->where('table_1.category', $category)
->where('table_1.location', $location)
->select('table_2.*', 'table_1.*')
->paginate(30);
Посоветуйте, пожалуйста, как этого добиться. Спасибо
2 ответа
Вам нужно использовать метод 'use()' для передачи параметра в ваш запрос where... если ваш параметр содержит массив, то вы можете использовать цикл foreach. Я думаю, что это будет работать...
$keys = \Request::get('keyword');
$category = \Request::get('category');
$location = \Request::get('location');
$myrecord = mytable_1::join('table_2', 'table_2.user_id', '=','table_1.user_id')
->where(function($query) use ($keys){
$query->where('table_1.title', 'like','%'.$keys.'%')
->orWhere('table_2.company', 'like','%'.$keys.'%');
})
->where('table_1.category', $category)
->where('table_1.location', $location)
->select('table_2.*', 'table_1.*')
->paginate(30);
Если вы используете соглашения Laravel, то я ожидаю, что имена столбцов будут table_1.category_id
а также table_1.location_id
, Если $category
а также $location
это целочисленные идентификаторы этих записей, тогда они должны работать так, как вы ожидаете.