2016-01-02 16 views
17

我得到這個錯誤。請查看下面的代碼:Laravel 5:</p> <blockquote> <p>MassAssignmentException in Model.php line 448: _token</p> </blockquote> <p>當我使用<code>create</code>方法:MassAssignmentException在Model.php

Contacts.php(模型):

class Contacts extends Model 
{ 
    protected $table = ['name', 'mobile', 'email', 'address', 'created_at', 'updated_at']; 
} 

ContactsController.php(控制器):

public function store(Request $request) 
{   
    $inputs = $request->all(); 
    $contacts = Contacts::Create($inputs); 
    return redirect()->route('contacts.index'); 
} 
+0

[MassAssignmentException在Laravel(https://stackoverflow.com/q/22280136/6521116) –

回答

70

對於Mass Assignment Exception:你應該指定所有您希望通過對屬性創建或更新操作進行批量分配的模型的字段$fillable

protected $fillable = ['name', 'mobile', 'email', 'address', 'created_at', 'updated_at']; 

此外,現場$table應該只包含模型的表名:

protected $table = 'your_table_name'; 
+1

由於它workd – Sandeep

+1

我怎麼會忘記這一點。謝謝。作品。 – pbalazek

3

如果你已經使用了錯誤導入的類這可能的情況下發生的。如果您正在使用用戶模型。

錯誤導入

// mostly IDE suggestion 
use Illuminate\Foundation\Auth\User; 

正確的模型導入

use App\User; 

我曾經使用過此了。可能會幫助某人。

+0

是的,它確實(:IDE中的自動導入可能會混淆有時 –

3

可以將所有列可填寫:

protected $guarded = array(); 

添加您的模型。

0

如果以上全部失敗,您可以嘗試以下操作。

在命名空間之後放置以下內容。

use Eloquent; 

請在store方法的開頭處加上以下內容。

Eloquent::unguard(); 

,如:

public function store(Request $request) 
{   
    Eloquent::unguard(); 
    $inputs = $request->all(); 
    $contacts = Contacts::Create($inputs); 
    return redirect()->route('contacts.index'); 
} 

不建議這樣做,雖然,因爲這使事情變得容易受到攻擊。但是如果你需要快速修復,這可能會有所幫助。

0

檢查您已導入或未導入的模型。如果不是的話就用這個。

<?php 

namespace App\Http\Controllers\Auth; 
use App\Http\Controllers\Controller; 
use App\User;