Paginator - Неизвестный столбец «страница» в «списке полей»

У меня есть большая форма для заполнения строки базы данных, поэтому я использую fill(Input::all()) для сохранения записи. На первой странице все в порядке, но на других страницах я получил ошибку:

Column not found: 1054 Unknown column 'page' in 'field list'

Я знаю, что это потому, что ?page=2 в моем URL. Но что я могу использовать что-то вроде Input::all() только для данных POST? Я знаю, что могу поместить имена полей в $fillable в моей модели, но это неудобно (слишком много полей). Я не могу поставить page в $guarded, потому что кто-то может поместить любое слово в URL (не только «страница»).


person Peter222    schedule 06.06.2013    source источник
comment
Fillable существует именно по этой причине, используйте его. Вам нужно положить его туда только один раз, так почему бы не сделать это и избавить себя от хлопот? Input::all получает переменные POST и GET.   -  person David    schedule 06.06.2013
comment
Я знаю, но неудобно проставлять все поля-названия вручную - по одному. У меня есть не только эта форма с большим количеством данных :)... и я надеюсь сделать это быстрее в будущем. Input::all() только для данных POST было бы очень хорошей функцией.   -  person Peter222    schedule 06.06.2013
comment
Это все так же небезопасно - я могу просто создать ввод, угадать поле, и я смогу вставить его в вашу таблицу, хотите вы этого или нет, если вы сделаете это таким образом.   -  person David    schedule 06.06.2013
comment
Это интранет-приложение, поэтому безопасность здесь не так важна. В противном случае я использую защиту csrf и проверяю ввод. Считаете ли вы, что использовать Input:all по-прежнему небезопасно? Его еще можно взломать?   -  person Peter222    schedule 06.06.2013
comment
Ну, любой в интранете все равно сможет. CSRF тоже мало что делает, просто мешает более простым приложениям делать это. Более сложные приложения могут обойти это. О каких полях идет речь? 20? 50? 100?   -  person David    schedule 06.06.2013
comment
Я думал, что если я заполню только все данные POST, любая попытка взломать и поместить поле, которое не существует в базе данных, просто приведет к ошибке базы данных. Я знаю, я ленивый... Я всегда пробую самый простой способ :) Но если ручное заполнение $fillable по именам полей - единственный безопасный способ заполнения форм, я сделаю это. Спасибо за помощь и объяснение.   -  person Peter222    schedule 06.06.2013


Ответы (1)


Вы можете просто сделать это

public guarded = array('page');

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

Или вы можете использовать

Input::except('page')

который получит все ключи ввода, кроме «страницы».

person chris_code    schedule 07.06.2013