PankovAlxndr
@PankovAlxndr
Fullstack web developer

Как реализовать релейшен в laravel?

Здравствуйте, подскажите по архитектуре БД и релейшенам?

У меня есть товар и его свойства, конкретно цвет и размер
у одного товара может быть сколько угодно цветов и размеров на цену это никак не влияет

Делаю таблицу товаров
products
id,name,slug.....

Делаю таблицу цветов
colors
id, name, hex

Делаю таблицу размеров
sizes
id, name, length, width, height

Делаю таблицу, в которой храню товар, его цвет, его размер
product_params
id, product_id, color_id, product_id

те в ней планирую записи типа
товар_1, красный, 10*10*10
товар_1, синий, 10*10*10
товар_1, зеленй, 10*10*10
.....
много строк на 1ин товар
я думаю сделать так, или можно как-то лучше?

при этом в модели товара я не очень понимаю как сделать релейшен
я бы хотел иметь их 2 на цвет и на размер
но у меня это все в одной таблице, может целесообразнее сделать один релейшен и разом все получать (эконичнее)?

типа

product->colors - отдает коллекцию цветов
product->sizes - отдает коллекцию размеров

но color и size в одной таблице(product_params), зачем их получать отдельными запросами, можно как-то получить одним?
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 1
Fragster
@Fragster
помогло? отметь решением!
Такая промежуточная таблица предполагает, что количество размеров равно количеству цветов. Лучше сделать две таблицы. Ну, или можно одну полиморфную (product_id, relation_type, relation_id), но это в данном случае нерационально.
Тип отношения называется many-to-many
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы