我收到此错误:
Model.php第448行中的MassAssignmentException:_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');
}
答案 0 :(得分:85)
对于Mass Assignment Exception:您应该通过属性$fillable
上的创建或更新操作指定要进行批量分配的模型的所有字段:
protected $fillable = ['name', 'mobile', 'email', 'address', 'created_at', 'updated_at'];
此外,字段$table
应仅包含模型的表名:
protected $table = 'your_table_name';
答案 1 :(得分:4)
如果你使用了错误导入的类,可能会发生这种情况。如果您使用的是用户模型。
错误的导入
// mostly IDE suggestion
use Illuminate\Foundation\Auth\User;
更正模型导入
use App\User;
我已经完成了这件事。可能对某人有所帮助。
答案 2 :(得分:4)
您可以填写所有列:
protected $guarded = array();
添加您的模型。
答案 3 :(得分:1)
您只需要将以下内容添加到模型(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' ];
}
答案 4 :(得分: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');
}
但不建议这样做,因为这会使攻击容易受到攻击。但如果您需要快速修复,这可能有所帮助。
答案 5 :(得分:0)
检查您已导入或未导入的模型。如果没有,那就使用它。
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\User;
答案 6 :(得分:0)
确保将$ fillable或$ guarded放置在app \ Contacts.php文件中,而不是app \ Http \ Controllers \ ContactsController.php文件中。它应该很明显,但是可以忽略。