к товару (условно, блок "похожие товары" на сайте)
Условно, структура таблиц:
products:
| id | name | price |
——————————-
| 1 | apple | 10 |
| 2 | phone | 599 |
| 3 | melon | 5400 |
| 4 | miloxin | 1000 |
——————————-
products_links:
| id | product_id | product_linked_id |
——————————————————
| 1 | 1 | 3 |
| 2 | 1 | 4 |
——————————————————-
В модели Product/Link написал следующее отношение:
public function product()
{
return $this->belongsTo(Product::class, 'product_linked_id', 'id');
}
В модели Product я пытаюсь реализовать отношение, чтобы получить связанные с товаром Product'ы:
public function linkedProducts()
{
return $this->hasManyThrough(Product::class, Product\Link::class, 'product_id', 'id', 'product_linked_id');
}
При product->linkedProducts, например для товара с id 1, получаю 0 связанных товаров.
В контексте описанного выше примера структуры таблиц и данных, для товара с name = apple должно вернуться 2 связанных товара.
Что я делаю не так?
Зачем ты узаешь hasManyThrough, если у тебя всего две модели?
@s4b0t вот
вот твой вариант, читай, если что-то не понятно, спрашивай конкретно https://laravel.com/docs/8.x/eloquent-relationships#many-to-many
product_id - это связное поле, указывающее на id в таблице products? а product_linked_id - это что такое?
Не верно выбранные модели и тип связи. выше подсказали связь, через крос таблицу модель саму на себя.
Продукт имеет много связанных товаров Связь - один продукт
Это вы сами для себя определяете.
один продукт может иметь связь с множеством продуктов (похожих или подходящих, что ты там закладываешь и зачем связываешь)
Да, product_id - id товара, с которым мы хотим образовать связь product_linked_id - id товара, который мы хотим связать с товаром
в качестве связи у тебя будет выступать pivot таблица, а вот полей связывающий продукты на прямую, в самом продукте не будет
https://laravel.demiart.ru/many-to-many-relationship/
Бро не легче ли просто в блоке "похожие товары" вывести товары из той же категории и бренда?
Легко, но ТЗ не такое
И опять очередной «работник», перекладывающий свою работу на чат
Вы абсолютно правы, даже сложно оспорить. Дадите знать, как научиться также точно анализировать людей? Забыл, ваши советы стоят денег. Ну, я как только закончу выполнение работ, получу с этого огромнейшую прибыль (свой драгоценный опыт), возможно вернусь лично к вам, поинтересуюсь чем-нибудь, закинув предоплату. ТЗ - условность.
Спасибо, ознакомился
Да-да, условность. А как же
Я очень коварный человек на самом деле. Вы действительно меня раскусили, подняв руки вверх я сознаюсь в этом! Я действительно переложил работу, которую дали мне, на сообщество. Я вообще изначально хотел сюда отправить весь проект, и ТЗ прислать, может кто помог бы.
Обсуждают сегодня