Laravel大规模分配问题似乎不一致


Laravel Mass Assignment Issue seems to be inconsistent

我正在Laravel 4中实现一些模型。当尝试create一个模型的新实例时,我收到一个MassAssignmentException。从我的研究中,我了解到,默认情况下,所有领域都被认为是保密的。为了使其工作,我需要指定fillable字段。一旦我这样做了,它就可以正常工作了。

然而,在数据库播种期间,我正在使用相同的方法创建一些新对象,没有指定fillable属性,并且我没有收到MassAssignmentException ?这是没有意义的。我遗漏了什么吗?

在添加可填充变量之前抛出MassAssignmentException的代码:

Role::create(array(
    'name' => 'admin'
));

databaseseder中没有抛出没有可填充变量的异常的代码:

Company::create(array(
    'name' => 'ABC Toys Inc.'
));

有人知道这是为什么吗?

databaseseder类包含在Laravel(我假设你正在使用)中,默认情况下,Mass Assignment守卫是关闭的。

class DatabaseSeeder extends Seeder 
{
    public function run()
    {
        Eloquent::unguard();
    }
}

Eloquent::unguard()函数关闭批量赋值保护。