Laravel获得嵌套关系值

时间:2016-04-23 12:56:31

标签: php laravel laravel-5

是否有可能在Laravel 5中轻松获得关系价值? 这是我需要的一个例子:

我有模型Book,我与模型authorAuthor的关系。 Author也与模型countryCountry的关系。我需要在书页上显示作者的国家名称。我可以轻松写道:

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。感谢。

1 个答案:

答案 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');