Laravel中的setPasswordAttribute

Jun*_*ooq 7 php eloquent laravel-4

我试图用给定的数据在Laravel中播放数据库,我看到了一个关于HASH :: make的片段,在模型中提到它而不是在播种器文件中.

TaskerTableSeeder.php

class TaskerTableSeeder extends Seeder{

    public function run(){

        Tasker::truncate();

        Tasker::create([
            'username'=>'junni',
            'email'=> 'junni@gmail.com',
            'password'=> 'Junaid'
            ]);
        Tasker::create([
            'username'=>'test',
            'email'=> 'test@gmail.com',
            'password'=> 'Test'
            ]);
        Tasker::create([
            'username'=>'poni',
            'email'=>'poni@loni.com',
            'password'=>'Poni'
            ]);

    }
}
Run Code Online (Sandbox Code Playgroud)

我把那个代码放在我的Hash :: make的Tasker模型中

class Tasker extends Eloquent{

    public function setPasswordAttribute($value){

        $this->attributes['password'] = Hash::make($value);
    }

}
Run Code Online (Sandbox Code Playgroud)

这是使您的密码HASH加密的方法,但我没有找到任何有关Laravel文档中的setPasswordAttribute函数的信息..以及我们可以使用这种类型的函数有多少其他属性.

Lau*_*nce 8

它们被称为Accessors和Mutators.

有关更多信息,请参阅Laravel文档.

它们允许您在从Eloquent模型设置(mutator)或获取(访问器)变量时定义行为.

另一个例子是

   public function setUsernameAttribute($value){

        $this->attributes['username'] = strtolower($value);
    }
Run Code Online (Sandbox Code Playgroud)