我的应用程序带有包含列的Users表:id | name | email | is_admin.我希望管理员能够将其他用户设置为管理员.
在models / User.php中,我通过以下方式阻止批量分配:
protected $fillable = ['name', 'email'];
Laravel 4 Role Based Mass Assignment得出结论,Laravel没有这样的功能.
我的问题是,什么是可行的解决方案?如何才允许管理员更新数据库中的“is_admin”列?
解决方法:
扩展您的用户模型以创建没有批量分配保护的仅限管理员的版本.
在新类中,覆盖$fillable属性:
class UnprotectedUser extends User
{
protected $fillable = [<all fields>];
}
然后在管理员特定代码中使用新模型:
$user = UnprotectedUser::create($arrayOfAllFields);
务必在尽可能多的地方使用原始课程,以便继续利用质量分配保护.