2016-01-02 3 views
17

Я получаю эту ошибку:Laravel 5: MassAssignmentException в 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'); 
} 
+0

[MassAssignmentException в Laravel] (https://stackoverflow.com/q/22280136/6521116) –

ответ

70

Для Mass Assignment Exception: вы должны указать все поля модели, которые вы хотите распределять по массе, путем создания или обновления операций над свойством $fillable:

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

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

protected $table = 'your_table_name'; 
+1

Спасибо это workd – Sandeep

+1

Как я мог забыть об этом. Спасибо. Работает. – pbalazek

3

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

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

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

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

use App\User; 

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

+0

Да, это было (: автоматический импорт в IDE может иногда путать –

3

Вы можете все колонки заполняемых:

protected $guarded = array(); 

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

0

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

Включить следующие пространства имен.

use Eloquent; 

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

Eloquent::unguard(); 

как:

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

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

0

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

<?php 

namespace App\Http\Controllers\Auth; 
use App\Http\Controllers\Controller; 
use App\User;