меня в $request() все поля, кроме двух не нуждаются в каком-либо изменении, видел запись наподобие
$pic->save($request->all()); (не уверен в точности)
И это работает, когда всё, что приходит из формы совпадает один в один с полями в модели.
А как быть, если мне надо пару полей заполнить вручную, а 10 (или даже 20) брать из $request? Перечислять все 10 (20)?
Есть $request->only(...), есть $request->except(...), есть $request->validate() если есть валидатор - он вернет только отвалидированные поля
Можеш сначало создать можель, по тем полям, что есть в реквесте и можеш сразу записать new Picasso($request->validated()) и потом добавлять другие Или как тут и тут - отобрать только нужние И немного советов: 1. использовать all() не нужно и не безопасно, в отличие от validated() (Для FormRequest) 2. Auth::user()->id можно заменить на Auth::id() 3. str_replace заменить на хелпер Str::slug
$a = $request->except (['a1', 'b2']); $a['a1'] = 123; $a['b2'] = 321; $pic->save($a);
Логично и удобно будет вынести код по request вынести в отдельный класс? Создание объекта пикассо в другое место? Если да, то куда, чтоб контроллер не был перегружен кодом.
Спасибо за развёрнутый ответ и за советы. new Picasso($request->validated()) не сработало, я так понимаю потому что валидация у меня у меня в самом методе (чуть выше строк, что я привёл на скрине), не вынесена отдельно. В купе всё получилось =) Пойду перепишу и остальные методы, а то там каша
Не сработало возможно потому что у тебя fillable не указаны поля?
Ну... Нет скорее всего, т.к. там очень много полей, я сделал protected $guarded = [];
Обсуждают сегодня