Laravel 5:Model.php 中的 MassAssignmentException

Laravel 5 : MassAssignmentException in Model.php

我收到此错误:

MassAssignmentException in Model.php line 448: _token

当我使用create方法时。请查看以下代码:

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');
}

对于 Mass Assignment Exception:您应该通过对 属性 $fillable 的创建或更新操作来指定您希望成为 mass-assignable 的模型的所有字段:

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

此外,字段 $table 应仅包含模型的 table 名称:

protected $table = 'your_table_name';

如果您使用了错误导入的 class,则可能会发生这种情况。如果您使用的是用户模型。

导入错误

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

正确导入模型

use App\User;

我经历过这个。可能会对某人有所帮助。

您可以填写所有栏目:

protected $guarded = array();

添加您的模型。

如果以上都失败了,你可以试试下面的方法。

在命名空间后添加以下内容。

use Eloquent;

将以下内容放在 store 方法的开头。

Eloquent::unguard();

赞:

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

但不推荐这样做,因为这会使事情容易受到攻击。但是,如果您需要快速修复,这可能会有所帮助。

检查您是否导入了模型。如果没有,那么使用这个。

<?php 

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

确保将 $fillable 或 $guarded 放在 app\Contacts.php 文件中,而不是 app\Http\Controllers\ContactsController.php 文件中。应该很明显,但也可以忽略。

您只需将以下内容添加到您的模型 (Contact):

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

例如:

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