Отношения Laravel, как правильно получить
Модель филиала
public function products(){
return $this->hasMany(Product::class);
}
Модель оплат
public function pays(){
return $this->hasMany(Product_pay::class);
}
Суть в том что у каждого филиала есть продукты, а у продуктов есть оплаты.В таблице все связи прописаны.
Branch::find(1)->products (корректно получаю список продуктов в филиале с ид 2 и 3)
Product::find(2)->pays (корректно получаю список оплат в продукте)
Но если пытаюсь получить сразу Branch::find(1)->products->pays то выдает ошибку
Exception with message 'Property [pays] does not exist on this collection instance.'
Что я не так делаю? Можно ли сразу получить коллекцию у филиала продуктов а в них оплаты ?
Ответы (2 шт):
Ты правильно пишешь, что Branch::find(1)->products возвращает "список продуктов". Получить "список оплат в продукте" можно у продукта, а не у "списка продуктов".
Можно обратиться к первому элементу коллекции и у него взять "список продуктов".
Branch::find(1)->products[0]->pays
Если же "список оплат" должен относится именно к "списку продуктов" (а не к отдельному продукту), то надо переделать модели. Должна быть отдельная сущность "список продуктов" к которой привязаны продукты и у которой есть "список оплат".
Попробуйте еще такой вариант
Branch::with('pays')->whereIn('id', [1])->get();