我正在Laravel 4中实现一些模型。在尝试create
模型的新实例时,我收到MassAssignmentException
。根据我的研究,我了解到,默认情况下,所有字段都被视为保护。为了使其工作,我需要指定fillable
字段。一旦我这样做,它就可以正常工作。
但是,在数据库种子设定期间,我使用相同的方法创建了一些新对象,但没有指定fillable
属性,我没有收到MassAssignmentException
?这是没有意义的。我在这里错过了什么吗?
在我添加可填充的var:
之前抛出MassAssignmentException的代码Role::create(array(
'name' => 'admin'
));
DatabaseSeeder中的代码,它没有抛出没有可填充var:
的异常Company::create(array(
'name' => 'ABC Toys Inc.'
));
有人知道这个的原因吗?
答案 0 :(得分:1)
Laravel中包含的DatabaseSeeder类(我假设您正在使用)默认情况下关闭了Mass Assignment保护。
class DatabaseSeeder extends Seeder
{
public function run()
{
Eloquent::unguard();
}
}
Eloquent :: unguard()函数关闭了质量分配防护。