Laravel 5 : MassAssignmentException in Model.php


Laravel 5 : MassAssignmentException in Model.php

我收到这个错误:

Model.php中的MassAssignmentException第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');
}

对于批量分配异常:您应该通过对属性$fillable:的创建或更新操作指定要批量分配的模型的所有字段

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

此外,字段$table应该只包含模型的表名:

protected $table = 'your_table_name';

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

错误的导入

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

正确的型号导入

use App'User;

我已经经历过了。可能会帮助别人。

您可以填写所有列:

protected $guarded = array();

添加您的模型。

您只需要将以下内容添加到您的模型(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' ]; 
}

如果以上所有操作都失败,您可以尝试以下操作

将以下内容放在命名空间之后。

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或$guard放在app''Contacts.php文件中,而不是app''Http''Controllers''ContactsController.php文件中。这应该是显而易见的,但也可以忽略。