是否有可能在Laravel 5中轻松获得关系价值? 这是我需要的一个例子:
我有模型Book
,我与模型author
有Author
的关系。 Author
也与模型country
有Country
的关系。我需要在书页上显示作者的国家名称。我可以轻松写道:
echo $model->author->country->name
但如果没有提供书籍的作者或者我们不了解作者的话呢?我会收到通知。
所以我需要添加额外的检查:
if ($model->author && $model->author->country) echo $model->author->country->name
也许在laravel中存在一些方法,它简化了获取值?
也许类似于SomeHelperClass::getValue($model, 'author.country.name')
,所以如果链的某些部分是null
,那么方法也会返回null
。感谢。
答案 0 :(得分:0)
很抱歉回答我自己的问题。无论如何:
Laravel 5.1有辅助函数array_get
,它的工作方式类似于我想要的。但问题是该函数仅适用于数组。所以我需要急切加载所有必需的数据并将对象转换为数组:
$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');