Reputation: 326
Is exist a possibility to easy get relation value in Laravel 5? Here an example of what i need:
I have model Book
and i have author
relation to model Author
. Author
also have relation country
to model Country
. I need to show on book page country name of Author. I can easy wrote:
echo $model->author->country->name
But what if a author of book not provided or we don't know author coutry? I will got a notice.
So I need to add additional checkings:
if ($model->author && $model->author->country) echo $model->author->country->name
Maybe exists some method in laravel, which simplify getting a value?
Maybe something like SomeHelperClass::getValue($model, 'author.country.name')
, so if some part of the chain is null
, then method also returns null
. Thanks.
Upvotes: 0
Views: 2053
Reputation: 326
Sorry for answering my own question. Anyway:
Laravel 5.1 has helper function array_get
, which works similar to what i want. But problem is that function works only with arrays. So i need to eager load all required data and convert object to an array:
$model = Book::with('author.country')->findOrFail($id);
$country_name = array_get($model->toArray(), 'author.country.name');
// or
$country_name = object_get($model, 'author.country.name');
Upvotes: 1