Laravel 5: при сохранении данных формы, _token вызывает исключение массового присвоения

Когда я пытаюсь сохранить данные формы, Laravel бросает исключение массового присваивания.

В представлении я использую {!! form::open(...) !!}, который, как я знаю, создает _token как скрытое поле.

Когда данные формы отправляются контроллеру, я использую

$data = Input::all();
$order = Order::create($data);
$order->save();

Должен ли я добавлять поле для _token в мою базу данных? Или я вызываю ошибку, делая что-то еще неправильно?

Ответ 1

Исключение массового присваивания обычно вызвано тем, что вы не указали в своей модели атрибуты fillable (или guarded напротив). Сделайте это:

class Order extends Eloquent {
    protected $fillable = ['field1', 'foo', 'bar'];
}

Таким образом, вам также не нужно беспокоиться о _token, потому что только заданные поля будут заполнены и сохранены в db независимо от того, какой другой материал вы передадите модели.

Ответ 2

или

protected $guarded = array();

Ответ 3

Убедитесь, что вы помещаете $ fillable или $ guard в файл app\Order.php, а не в файл app\Http\Controllers\OrderController.php.

Ответ 4

Чтобы ответить на ваш первоначальный вопрос. Вы хотели бы сделать unset ($ request ['_ token']); перед твоим созданием.