模型实例的 makeVisible () 方法是做什么用的?
自解:
作用同 unguard () 一样,都是为了实现批量赋值,unguard () 和 reguard () 方法参见 问答:unguard / reguard 这二个方法怎么理解?, makeVisible () 方法参见 序列化《Laravel 5.6 中文文档》
-
在 User 模型中 有两个属性,其中的 fillable 是允许填充,比如 remember_toke 不在之中,是由后台自动生成;hidden 则表示该属性在模型实例中会被隐藏,比如 $user_arr = \App\Models\User::first ()->toArray (); 这个数组中 就不包括 hidden 中的 passoword 和 remember_toke ,( 可以使用 $user->password 单独查询 ).
protected $fillable = [ 'name', 'email', 'password', ]; protected $hidden = [ 'password', 'remember_token', ];
-
现在需要使用 factory 批量给用户赋值,如果不使用 makeVisible 方法,那么生成的数组中也就不包括 password 和 remember_token 了 (而现在批量赋值要想给这两个字段也赋值,就需要用到这个方法了)
User::insert($users->makeVisible(['password', 'remember_token'])->toArray());
推荐文章: