Как получить отношения внутри отношений - PullRequest
0 голосов
/ 08 мая 2018

Я хочу получить отношения внутри отношений, используя красноречивые отношения Laravel.

Вот что я попробовал: Это мой заказ модель

public function orderProduct()
{
    return $this->hasMany(OrderProduct::class);
}

И это мой OrderProduct Модель

public function expiry()
{
    return $this->hasOne(ProductExpiryDate::class);
}

Я пытался получить дату истечения срока действия основной модели заказа, как это

$deliveryOrder = Order::find($id);
dd($deliveryOrder->orderProduct()->expiry)

И это возвращает мне ошибку:

Undefined property: Illuminate\Database\Eloquent\Relations\HasMany::$expiry

Пожалуйста, помогите мне. Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Вы получаете эту ошибку, потому что это не энергичная загрузка, я бы порекомендовал

$deliveryOrder = Order::with('OrderProduct.expiry')->find($id);
dd($deliveryOrder->orderProduct->expiry)

А также при использовании

$deliveryOrder->orderProduct() // this refers to relationship so 

поменяй на это.

$deliveryOrder->orderProduct->expiry

Надеюсь, это поможет

0 голосов
/ 08 мая 2018

То, что вы пытаетесь сделать, - это установить отношения со своими подчиненными отношениями.

Это легко сделать с помощью следующего:

App\Order::with('OrderProduct.expiry')->get();

Из документации Laravel вы можете найти следующее относительно Nested Eager Загрузка :

Чтобы загружать вложенные отношения, вы можете использовать синтаксис "точка". Например, давайте стремимся загрузить всех авторов книги и все личные контакты автора в одно высказывание Eloquent:

$ books = App \ Book :: with ('author.contacts') -> get ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...