169 похожих чатов

✌🏻 Есть модель Product Есть модель Product/Link - отвечает за привязку товаров

к товару (условно, блок "похожие товары" на сайте)

Условно, структура таблиц:
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 связанных товара.

Что я делаю не так?

20 ответов

12 просмотров

Зачем ты узаешь hasManyThrough, если у тебя всего две модели?

Lyonya-Yakovlev Автор вопроса

@s4b0t вот

вот твой вариант, читай, если что-то не понятно, спрашивай конкретно https://laravel.com/docs/8.x/eloquent-relationships#many-to-many

product_id - это связное поле, указывающее на id в таблице products? а product_linked_id - это что такое?

Lyonya Yakovlev
@s4b0t вот

Не верно выбранные модели и тип связи. выше подсказали связь, через крос таблицу модель саму на себя.

Lyonya-Yakovlev Автор вопроса
Lyonya Yakovlev
Почему mtm?

Продукт имеет много связанных товаров Связь - один продукт

Lyonya Yakovlev
Почему mtm?

Это вы сами для себя определяете.

Lyonya Yakovlev
Продукт имеет много связанных товаров Связь - один...

один продукт может иметь связь с множеством продуктов (похожих или подходящих, что ты там закладываешь и зачем связываешь)

Lyonya-Yakovlev Автор вопроса
Anton
product_id - это связное поле, указывающее на id в...

Да, product_id - id товара, с которым мы хотим образовать связь product_linked_id - id товара, который мы хотим связать с товаром

Lyonya Yakovlev
Продукт имеет много связанных товаров Связь - один...

в качестве связи у тебя будет выступать pivot таблица, а вот полей связывающий продукты на прямую, в самом продукте не будет

https://laravel.demiart.ru/many-to-many-relationship/

Бро не легче ли просто в блоке "похожие товары" вывести товары из той же категории и бренда?

И опять очередной «работник», перекладывающий свою работу на чат

Lyonya-Yakovlev Автор вопроса
Артём
И опять очередной «работник», перекладывающий свою...

Вы абсолютно правы, даже сложно оспорить. Дадите знать, как научиться также точно анализировать людей? Забыл, ваши советы стоят денег. Ну, я как только закончу выполнение работ, получу с этого огромнейшую прибыль (свой драгоценный опыт), возможно вернусь лично к вам, поинтересуюсь чем-нибудь, закинув предоплату. ТЗ - условность.

Lyonya-Yakovlev Автор вопроса
Lyonya-Yakovlev Автор вопроса
Артём
Да-да, условность. А как же

Я очень коварный человек на самом деле. Вы действительно меня раскусили, подняв руки вверх я сознаюсь в этом! Я действительно переложил работу, которую дали мне, на сообщество. Я вообще изначально хотел сюда отправить весь проект, и ТЗ прислать, может кто помог бы.

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта