在 Laravel 5 中访问原始 Eloquent 变异属性值
Access raw Eloquent mutated attribute value in Laravel 5
假设我有一个模型 Foo
并且我正在改变一个属性 getter,就像这样:
class Foo extends Model
{
protected $table = 'foo';
public function getSomeBarAttribute($value)
{
return some_function($value);
}
}
有没有办法访问属性的原始值,预突变?
在模型中定义了这个变量:
/**
* The model attribute's original state.
*
* @var array
*/
protected $original = array();
它受到保护,所以你应该添加一个函数来获取原始值
(未测试)
您要找的方法是getOriginal。要获得原始值,您可以使用:
$this->getOriginal('some_bar');
getOriginal()
方法 return 只有 db 属性为 Array 类型。所以getAttributes和setAttributes等值确实没有包括在内。
Array returns [key => value] 足以用于新的 Eloquent 实例。如果你想使用计算旧属性的 GetAttributes,你可以在使用 getAttributes with Original Values
之前创建新的模型实例
$currentSomeBar = $foo->some_bar
$oldFoo = new Foo($foo->getOriginal());
$oldSomeBar = $oldFoo->some_bar;
假设我有一个模型 Foo
并且我正在改变一个属性 getter,就像这样:
class Foo extends Model
{
protected $table = 'foo';
public function getSomeBarAttribute($value)
{
return some_function($value);
}
}
有没有办法访问属性的原始值,预突变?
在模型中定义了这个变量:
/**
* The model attribute's original state.
*
* @var array
*/
protected $original = array();
它受到保护,所以你应该添加一个函数来获取原始值
(未测试)
您要找的方法是getOriginal。要获得原始值,您可以使用:
$this->getOriginal('some_bar');
getOriginal()
方法 return 只有 db 属性为 Array 类型。所以getAttributes和setAttributes等值确实没有包括在内。
Array returns [key => value] 足以用于新的 Eloquent 实例。如果你想使用计算旧属性的 GetAttributes,你可以在使用 getAttributes with Original Values
之前创建新的模型实例$currentSomeBar = $foo->some_bar
$oldFoo = new Foo($foo->getOriginal());
$oldSomeBar = $oldFoo->some_bar;