【发布时间】:2017-02-20 04:51:24
【问题描述】:
是否有任何可能的方法来延迟加载 Laravel 模型上的自定义属性而不每次都使用 appends 属性加载它?我正在寻找类似于lazy load Eloquent relationships 的方式。
例如,给定模型上的这个访问器方法:
public function getFooAttribute(){
return 'bar';
}
我希望能够做这样的事情:
$model = MyModel::all();
$model->loadAttribute('foo');
这个问题不与Add a custom attribute to a Laravel / Eloquent model on load? 相同,因为它想在每个模型加载时加载自定义属性 - 我只希望 延迟加载 属性指定时。
我想我可以为模型实例分配一个与自定义属性同名的属性,但这会导致调用访问器方法两次的性能下降,如果这样做可能会产生意想不到的副作用访问器影响类属性,只是感觉很脏。
$model = MyModel::all();
$model->foo = $model->foo;
有没有人有更好的处理方法?
【问题讨论】: