#php #html #mysql #laravel
#php #HTML #mysql #laravel
Вопрос:
У меня есть две таблицы: бренды и модели. Таблица брендов содержит идентификатор для каждой марки и название. Таблица моделей имеет идентификатор модели и внешний ключ для каждого идентификатора бренда и названия модели.
Вот таблица модели, где «cod_marca» — это внешний ключ, а «modelo» — это имя модели.
И здесь у меня есть таблица брендинга, где «cod_marca» — это идентификатор, а «marca» — это имя.
Я хочу, чтобы пользователь выполнял поиск по названию каждой марки, и все должно быть указано в соответствии с «cod_marca», то есть, если пользователь ищет «Chevrolet», я хочу, чтобы отображались модели с идентификатором «1».
Вот мой код поиска:
public function buscar(Request $request) {
$model = $request->get('marca');
$models = DB::table('marcas')->where('marca', 'like', '%' . $marca . '%')->paginate(5);
return view('buscar', ['models' => $models]);
}
Код формы является общим, я просто использовал a <select>
с названием бренда.
Комментарии:
1. Это было бы немного проще, если бы у вас были модели для каждой таблицы с определенными отношениями между ними. А вы?
2. Связь между таблицей моделей и таблицей брендов — это столбец «cod_marca».
3. Я понимаю, но есть ли у вас модели для каждой таблицы с отношениями , связывающими эти модели? Вы можете использовать query builder (
DB::table(......
), но было бы намного проще, если бы у вас были настроены модели. Мне просто интересно, есть ли они у вас или нет4. Нет, у меня есть только таблица models, которая связана с таблицей brands.
Ответ №1:
Лично я предпочитаю создавать модели для каждой таблицы с отношениями, связывающими эти модели, и использовать Eloquent для извлечения результатов.
Тем не менее, вы можете делать то, что хотите, используя метод объединения построителя запросов следующим образом:
public function buscar(Request $request) {
$model = $request->get('marca');
$models = DB::table('models ')
->join('marcas', 'models.cod_marca', '=', 'marcas.cod_marca')
->select('models.cod_modelo', 'models.cod_marca', 'models.modelo', 'marcas.marca')
->where('marcas.marca', 'like', '%' . $marca . '%')
->paginate(5);
return view('buscar', ['models' => $models]);
}