laravel 访问器 & 修改器

 余温
2018年10月12日 11时48分
 php

访问器 & 修改器

定义一个访问器

若要定义一个访问器,则须在你的模型上创建一个 getFooAttribute 方法。要访问的 Foo 字段需使用「驼峰式」来命名。在这个例子中,我们将为 first_name 属性定义一个访问器。当 Eloquent 尝试获取 first_name 的值时,将会自动调用此访问器:

访问器 & 修改器

定义一个访问器

若要定义一个访问器,则须在你的模型上创建一个 getFooAttribute 方法。要访问的 Foo 字段需使用「驼峰式」来命名。在这个例子中,我们将为 first_name 属性定义一个访问器。当 Eloquent 尝试获取 first_name 的值时,将会自动调用此访问器:

如你所见,字段的原始值被传递到访问器中,允许你对它进行处理并返回结果。如果想获取被修改后的值,你可以在模型实例上访问 first_name 属性:

$user = App\User::find(1);$firstName = $user->first_name;

当然,你也可以通过已有的属性,使用访问器返回新的计算值:

/**
 * 获取用户姓名。
 *
 * @return string
 */public function getFullNameAttribute(){
    return "{$this->first_name} {$this->last_name}";}

定义一个修改器

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

<?phpnamespace App;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\User::find(1);$user->first_name = 'Sally';

在这个例子中, setFirstNameAttribute 方法在调用的时候会接收 Sally 这个值作为参数。接着修改器会应用strtolower 函数并将处理结果的值设置到内部的 $attributes 数组。

laravel5.5 需要把添加的修改器的访问名称 添加到   $appends  这个属性里面(以数组的方式) 如下'' 5.5以后的版本有时间再测试  

5.5不加这个属性会访问不到 

protected $appends = ['description','firstname'];


{{vo.nickname}}:{{vo.content}}

{{vo.time}} 回复


  • {{level.nickname}} 回复 {{level.father_nickname}}{{level.content}}
  • {{level.time}} 回复


@
登陆后评论