php - Laravel 5. Eloquent relations through several tables and behaviour in foreach -
i have following models:
shop_list:
public function shoplistitem() { return $this->hasmany(shopping_list_item::class, 'shopping_list_id'); }
shopping_list_item:
public function shoppinglist() { return $this->belongsto(product::class); } public function product() { return $this->belongsto(product::class); }
product:
public function shoplistitem() { return $this->hasmany(shopping_list_item::class); }
when execute code:
{{$shoppinglists->shoplistitem()->first()}}
i following correct result:
{"id":1,"shopping_list_id":13,"product_id":69,"quantity":4,"created_at":"2016-09-05 19:23:35","updated_at":"2016-09-05 19:34:53"}
but if want loop , id:
@foreach($shoppinglists $sh) {{$sh->shoplistitem()->id}} @endforeach
then following error:
call member function shoplistitem() on boolean
question: why in loop object transformed boolean? correct way loop?
when want access attributes of related model, need use object, not function. note lack of parenthesis.
{{$sh->shoplistitem->id}}
since it's hasmany
relationship, shoplistitem
array you'll need iterate through:
@foreach($sh->shoplistitem $item) {{ $item->id }} @endforeach
Comments
Post a Comment