@andrew-corput

Как реализовать выбор модели по производителю?

Представляю себе это так:
Таблицы
Goods - таблица товаров, содержит поля id, brand_id, model_id.

Brands - таблица с наименованиями брендов, содержит поля id, name

Models - таблица с наименованиями моделей, содержит поля id, parent_id, name


Нужно будет выводить товар в виде "Производитель: {{ brand_id (name) }} модель {{ model_id (name) }}".
Не представляю как связать таблицы таким образом, чтобы при выборе производителя можно было выбрать только соответствующие ему модели.

Третий день не могу разобраться с этим вопросом, похожих примеров не нашел. опыт не большой, желательно примером.
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
be_a_dancer
@be_a_dancer
Middle Backend/Fullstack Developer
1) Не понятно для чего вы сделали связь многие ко многим. Ведь один товар может иметь только одного производителя, а один производитель много товаров. Вырисовывается связь O:M. Делается классически - в таблице товара столбец brand_id. В модели бренда метод
public function models()
{
    return $this->hasMany(Model::class);
}


Похожий метод и в модель модели (тавтология)
public function brands()
{
    return $this->belongsTo(Brand::class);
}


Извлекать так:
Model::findOrFail($id)->brand->name;
//Или так
Brand::findOrFail($id)->models()->where('id', $id)->first()->name;
//Или так во вьюшке
@foreach(Brand::findOrFail($id)->models as $model)
Производитель {{$brand->name}} : модель {{$model->name}}
@endforeach


2) Если вам прямо критично делать выбор many-to-many, то выборка производится c использованием whereHas
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы