Laravel 5: исключение MassAssignmentException в Model.php
Я получаю эту ошибку:
Исключение MassAssignmentException в строке Model 443.: _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');
}
Ответы
Ответ 1
Для Exception Mass Assignment: вы должны указать все поля модели, которые вы хотите назначить по массе, путем создания или обновления операции над свойством $fillable
:
protected $fillable = ['name', 'mobile', 'email', 'address', 'created_at', 'updated_at'];
Кроме того, поле $table
должно содержать только имя таблицы модели:
protected $table = 'your_table_name';
Ответ 2
Это может произойти в случае, если вы использовали неправильно импортированный класс. если вы используете модель пользователя.
Неверный импорт
// mostly IDE suggestion
use Illuminate\Foundation\Auth\User;
Правильный импорт модели
use App\User;
Я прошел через это. может помочь кому-то.
Ответ 3
Вы можете использовать все столбцы:
protected $guarded = array();
Добавьте свою модель.
Ответ 4
Если все вышеперечисленное не удается, вы можете попробовать следующее.
Поместите следующее после пространства имен.
use Eloquent;
Следуйте в начале вашего метода store
.
Eloquent::unguard();
like:
public function store(Request $request)
{
Eloquent::unguard();
$inputs = $request->all();
$contacts = Contacts::Create($inputs);
return redirect()->route('contacts.index');
}
Это не рекомендуется, так как это делает вещи уязвимыми для атак. Но если вам нужно быстрое исправление, это может помочь.
Ответ 5
Проверьте модель, которую вы импортировали или нет. Если нет, используйте это.
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\User;