2014-07-22 61 views
2

我正在致力於在Laravel 4中實施一些模型。嘗試create模型的新實例時,我收到MassAssignmentException。從我的研究中,我瞭解到,默認情況下,所有字段都被認爲是守護的。爲了得到這個工作,我需要指定fillable字段。一旦我這樣做,它可以正常工作。Laravel Mass Assignment問題似乎不一致

但是,在數據庫播種期間,我使用相同的方法創建了一些新對象,但沒有指定fillable屬性,並且我沒有收到MassAssignmentException?這是沒有道理的。我在這裏錯過了什麼嗎?之前我添加了可填寫VAR它扔了MassAssignmentException

代碼:

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

守則DatabaseSeeder它沒有沒有可填寫VAR拋出異常:

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

任何人都知道這樣做的原因?

回答

1

Laravel中包含的DatabaseSeeder類(我假設您使用的是)默認情況下關閉了質量分配防護。

class DatabaseSeeder extends Seeder 
{ 

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

Eloquent :: unguard()函數關閉質量分配防護。

+0

有道理。謝謝! – Chris

相關問題