我正在尝试遍历复杂的雄辩模型关系/属性,并且我想使用一个简单的点结构来遍历这一点,类似于如何遍历数组 Arr::get()
例子:
$data = [
'foo' => [
'bar' => [
'key' => 'value'
]
]
];
$value = Arr::get($data, 'foo.bar.key'); // returns 'value'
我试过使用
$value = Arr::get($model, 'relation.subrelation.attribute')
但是,这失败了,即使雄辩的模型支持ArrayAccess,aways也会返回null。
laravel是否有简单的方法来实现这一目标?
对于所有想知道的人,我设法通过修改arr :: pull()函数来专门针对模型来找到解决方案:
public static function traverse($model, $key, $default = null)
{
if (is_array($model)) {
return Arr::get($model, $key, $default);
}
if (is_null($key)) {
return $model;
}
if (isset($model[$key])) {
return $model[$key];
}
foreach (explode('.', $key) as $segment) {
try {
$model = $model->$segment;
} catch (\Exception $e) {
return value($default);
}
}
return $model;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句