若要定义一个修改器,则需在模型上面定义 setFooAttribute 方法。要访问的 Foo 字段使用「驼峰式」命名。让我们再来定义一个 first_name 属性的修改器。当我们尝试使用 first_name 属性值时,该修改器将被自动调用:

    1. <?php
    2. namespace App\Models;
    3. use Illuminate\Database\Eloquent\Model;
    4. class User extends Model
    5. {
    6. /**
    7. * 设置用户名
    8. *
    9. * @param string $value
    10. * @return void
    11. */
    12. public function setFirstNameAttribute($value)
    13. {
    14. $this->attributes['first_name'] = strtolower($value);
    15. }
    16. }

    修改器会获取属性已经被设置的值,允许你修改并且将其值设置到 Eloquent 模型内部的 $attributes 属性上。举个例子,如果我们尝试将 first_name 属性的值设置为 DING

    $user = App\Models\User::find(1);
    $user->first_name = 'DING';
    

    然后修改器会使用 strtolower将DING变为ding