Laravel 8 定义一个修改器
若要定义一个修改器,则需在模型上面定义 setFooAttribute
方法。要访问的 Foo
字段使用「驼峰式」命名。让我们再来定义一个 first_name
属性的修改器。当我们尝试使用 first_name
属性值时,该修改器将被自动调用:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* 设置用户名
*
* @param string $value
* @return void
*/
public function setFirstNameAttribute($value)
{
$this->attributes['first_name'] = strtolower($value);
}
}
修改器会获取属性已经被设置的值,允许你修改并且将其值设置到 Eloquent 模型内部的 $attributes
属性上。举个例子,如果我们尝试将 first_name
属性的值设置为 Sally
:
$user = App\Models\User::find(1);
$user->first_name = 'Sally';
在本例中, setFirstNameAttribute
方法在调用的时候赋予 Sally
这个值作为参数。然后修改器会使用 strtolower
函数处理并将结果设置到内部的 $attributes
数组。