РЕДАКТИРОВАТЬ 2
После вашего ответа я понял, что вы хотите.
Просто обновите модель ProductAdvice, чтобы иметь другие отношения, например:
class ProductAdvice extends Model
{
public function product()
{
return $this->belonsTo('App\Product', 'product_id');
}
public function related()
{
return $this->belonsTo('App\Product', 'product_advice_id');
}
}
Тогда выможет сделать:
$product = Apple
$product->advices->message = 'blablabla'
$product->advices->related = 'ProductX'
Если вам нужно обратный порядок, $advice->product->related
добавьте те же отношения в вашей модели продукта.
РЕДАКТИРОВАТЬ 1
Извините, выредактировал сообщение после моего ответа ...
Не могли бы вы объяснить необходимость 'product_advice_id'?У вас уже есть product_id.
Если вам не нужна сводная таблица, например: Product -> ProductAdvice -> Advice, которая не нужна в вашем случае, так как вы можете просто поместить информацию совета в таблицу Advice исвяжите его с продуктом (принадлежит), устраняя необходимость в сводке ProductAdvice.
Я думаю, что ваша структура должна быть такой:
Модель продукта со всем продуктомданные
ProductAdvice модель с product_id и информация о совете (сообщение, рейтинг и т. д.)
Затем ваш продукт имеет много советов, и ваш совет принадлежит вам.Продукт:
class Product extends Model
{
public function advices()
{
return $this->hasMany('App\ProductAdvice', 'product_id');
}
}
class ProductAdvice extends Model
{
public function product()
{
return $this->belonsTo('App\Product', 'product_id');
}
}
Наконец, вы можете запросить советы по конкретному продукту, чтобы получить информацию о совете:
$product->advices->message
$product->advices->rating
или запросить название продукта, если у вас есть совет:
$advice->product->name