Laravel 5: MassAssignmentException в Model.php

Я получаю эту ошибку:

MassAssignmentException в строке Model.php 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');
}

person Sandeep    schedule 02.01.2016    source источник
comment
MassAssignmentException в Laravel   -  person LF00    schedule 13.06.2017


Ответы (7)


Для Исключения массового назначения: необходимо указать все поля модели, которые вы хотите, чтобы их можно было массово назначать с помощью операций создания или обновления свойства $fillable:

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

Кроме того, поле $table должно содержать только имя таблицы модели:

protected $table = 'your_table_name';
person Moppo    schedule 02.01.2016
comment
Как я мог забыть это. Спасибо. Работает. - person Peter; 25.03.2016

Это может произойти в случае, если вы использовали неправильно импортированный класс. если вы используете модель пользователя.

Неправильный импорт

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

Правильный импорт модели

use App\User;

я прошел через это. может помочь кому-то.

person shakee93    schedule 29.07.2016
comment
Да, было (: автоматический импорт в IDE иногда может сбивать с толку - person Leap Hawk; 12.11.2016

Вы можете заполнить все столбцы:

protected $guarded = array();

Добавьте свою модель.

person Ferhat KOÇER    schedule 26.04.2017

Вам нужно только добавить следующее к вашей модели (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' ]; 
}
person Youssef Belyazidi    schedule 03.04.2019
comment
Можете ли вы предоставить более подробную информацию. Вы предполагаете, что им не нужна функция store, что предоставленная вами $fillable должна заменить $table или что-то еще? - person dovetalk; 04.04.2019
comment
Г-н Сандип хочет вставить данные в таблицу контактов, поэтому ему нужно перейти в модель контактов и поставить protected $fillable = [ 'name', 'mobile', 'email', 'address', 'created_at', 'updated_at' ]; - person Youssef Belyazidi; 04.04.2019
comment
Итак, вы предлагаете добавить это в его класс Contact в дополнение к коду, который он уже предоставил? - person dovetalk; 04.04.2019
comment
Да, точно ! нравится это class Contacts extends Model { protected $table = ['name', 'mobile', 'email', 'address', 'created_at', 'updated_at']; protected $fillable = [ 'name', 'mobile', 'email', 'address', 'created_at', 'updated_at' ]; } - person Youssef Belyazidi; 04.04.2019

Если все вышеперечисленное не помогло, вы можете попробовать следующее.

Поместите следующее после пространства имен.

use Eloquent;

Поместите следующее в начало вашего метода store.

Eloquent::unguard();

нравится:

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

Однако это не рекомендуется, так как это делает вещи уязвимыми для атак. Но если вам нужно быстрое решение, это может помочь.

person Joynal Abedin    schedule 13.10.2017

Проверьте модель, которую вы импортировали или нет. Если нет, то используйте это.

<?php 

 namespace App\Http\Controllers\Auth; 
 use App\Http\Controllers\Controller; 
 use App\User;
person Rahul Hirve    schedule 10.01.2018

Убедитесь, что вы помещаете $fillable или $guarded в файл app\Contacts.php, а не в файл app\Http\Controllers\ContactsController.php. Это должно быть очевидно, но на это можно не обращать внимания.

person Keith Turkowski    schedule 03.10.2018