是否有任何可能的方法来延迟加载 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;
有没有人有更好的方法来处理这个问题?
最佳答案
这是为了连载吗?您可以在模型实例上使用 append()
方法:
$model = MyModel::all();
$model->append('foo');
append
方法也可以将数组作为参数。
关于php - 如何在 Laravel 模型上延迟加载自定义属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39980760/