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' ];
}
我收到此错误:
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' ];
}