php - 如何在 Laravel 模型上延迟加载自定义属性?

标签 php laravel laravel-5

是否有任何可能的方法来延迟加载 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/

相关文章:

php - 如何按字母顺序排序此 SQL 查询?

php - Laravel 社交名媛 facebook 头像

php - 验证值有两种可能的类型

php - Laravel hasManyThrough 但必须只返回一个数组

php - Laravel 5.1 中的空 where 子句更喜欢 Eloquent 方法

php - MySQL 打印同一条记录两次

php - 如何使 .php 扩展名不出现在网站上?

php - 使用 javascript 将焦点置于具有变量名称的文本区域内

php - 有条件地构建 Eloquent 查询

laravel-5 - Nexmo API 凭据错误