Laravel Mass Assignment Issue似乎不一致

时间:2014-07-22 01:19:44

标签: php laravel laravel-4 mass-assignment

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

但是,在数据库种子设定期间,我使用相同的方法创建了一些新对象,但没有指定fillable属性,我没有收到MassAssignmentException?这是没有意义的。我在这里错过了什么吗?

在我添加可填充的var:

之前抛出MassAssignmentException的代码
Role::create(array(
    'name' => 'admin'
));

DatabaseSeeder中的代码,它没有抛出没有可填充var:

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

有人知道这个的原因吗?

1 个答案:

答案 0 :(得分:1)

Laravel中包含的DatabaseSeeder类(我假设您正在使用)默认情况下关闭了Mass Assignment保护。

class DatabaseSeeder extends Seeder 
{

    public function run()
    {
        Eloquent::unguard();
    }
}

Eloquent :: unguard()函数关闭了质量分配防护。