2016-04-14 3 views
3

У меня есть простая модель IsolatedQuery, которая состоит из полей name и query. Я определил эти два поля в свойстве $fillable модели. IsolatedQueryController @ магазин выглядит следующим образом:

public function store(IsolatedQueryRequest $request) 
{ 
    IsolatedQuery::insert($request->all()); 

    session()->flash('flash_message', 'Isolated Query succesvol opgeslagen'); 

    return redirect('iq'); 
} 

Для полноты, вот источник этой модели (это так же мало, как я описал)

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class IsolatedQuery extends Model 
{ 
    protected $fillable = [ 
     'name', 
     'query' 
    ]; 
} 

IsolatedQueryRequest требует только как name и query быть заполненный любой ценностью.

При вызове метода store с заданным именем и значением запроса я получаю сообщение об ошибке: SQLSTATE[42S22]: Column not found: 1054 Unknown column '_token' in 'field list'.

Очевидно, что поле _token получает сообщение с запросом, но я немного озадачен, почему он пытается сохранить его с помощью реального SQL-запроса, поскольку он не указан в массиве $fillable.

Почему он получает назначение массы?

+0

Возможный дубликат [Laravel 5.2 $ fillable] (http://stackoverflow.com/questions/34864666/laravel-5-2-fillable) – bishop

+0

@bishop Это не дубликат, этот вопрос спрашивает, почему это происходит, и одно вы ссылаетесь на не отвечает на это. Кроме того, этот вопрос касается использования заполняемого свойства, а другой - его не использовать. –

+0

Это не дубликат. Я хочу применить '$ request-> all()', это должно быть возможно, а не для вызова '$ request-> only'. Если бы я хотел, мне не пришлось бы определять массовый присваиваемый список с '$ fillable'. – Ben

ответ

3

Используется метод Query Builder insert. Он не проверяет fillable.
Вы должны использовать метод «Красноречивый» create или update.
Пожалуйста, прочтите documentation.

Кроме того, вы можете передавать входные данные в construct или fill метод «Красноречивый». После этого вы можете использовать метод save.

+0

Howly mowly .. Я полностью просмотрел его ... Спасибо! + 1A – Ben

+0

Можно также использовать ['Eloquent :: fill()'] (https://github.com/laravel/framework/tree/master/src/Illuminate/Database/Eloquent/Model.php#L428-L454) , хотя IMO 'create' и' update' выражают намерение более четко. – bishop

+0

, так что вы будете делать, когда у вас есть большие данные, чтобы вставить их один раз? зацикливание через него и использование метода create неэффективно вообще – wahdan