📅  最后修改于: 2023-12-03 14:43:48.147000             🧑  作者: Mango
在 Laravel 中,Mutators 是用于修改模型属性的值的一种强大机制。但有时候,我们需要在某些情况下忽略掉 Mutators,比如在使用 Eloquent 的 update()
方法时。本文将介绍在 Laravel 中如何忽略 Mutators。
在 Laravel 中,Mutators 是用于修改模型属性值的函数。这些函数命名通常以 set
开头,例如:
public function setPasswordAttribute($value)
{
$this->attributes['password'] = bcrypt($value);
}
上述代码中,setPasswordAttribute
方法会在设置 password
属性值时被自动调用。该方法将传入的 $value 值加密后再赋值给模型的 password
属性。
当我们需要在不触发 Mutators 的情况下修改模型的属性时,可以使用 $model->forceFill($attributes)
方法。该方法会填充 $attributes 数组中指定的属性值,并将这些值直接设置到模型的属性中,而不会触发任何 Mutators。
示例代码:
$user = User::find(1);
$user->forceFill([
'name' => 'John Doe',
'email' => 'john@example.com'
]);
$user->save();
这段代码会更新 name
和 email
属性的值,而不会触发任何 Mutators。
在 Laravel 中,使用 Mutators 可以方便地修改模型属性的值。但有时候我们需要忽略 Mutators,例如在使用 update()
方法时。Laravel 提供了 forceFill()
方法来实现这一目的,它能够直接给模型属性赋值,而不触发任何 Mutators。