Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 13.11.2020 05:00:39

Есть ли способ вручную обновить updated_at через конструктор запросов?

А то у меня что-то не обновляется автоматом. Через touch() в модели не обновляет тоже.

Не в сети

#2 14.11.2020 20:19:35

Re: Есть ли способ вручную обновить updated_at через конструктор запросов?

Может стоило бы модель свою показать?

$model->update(['created_at' => now()])

Не в сети

#3 15.11.2020 05:56:43

Re: Есть ли способ вручную обновить updated_at через конструктор запросов?

Я через DB::update запрос делаю. Ставлю в `updated_at` = Carbon::now(), получаю SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax. А если скопировать дату прямо из сообщения об ошибке и вставить в updated_at - то нет проблем.
Почему так - не понятно.
Вроде updated_at вообще должен автоматом обновляться.

Изменено evg1401 (15.11.2020 06:02:00)

Не в сети

#4 15.11.2020 11:13:39

Re: Есть ли способ вручную обновить updated_at через конструктор запросов?

На сколько я знаю через DB нет. DB и Eloquent это разные вещи. Первая это сухой запрос и он понятия не имеет что тебе там ещё нужно обновить. А второй берет твою модель. Видит что у тебя там прописано что нужно обновить таймстамп и обновляет. А в чем проблема обновить через Eloquent? Приведите всю строку кода с запросом в котором возникает ошибка.

Не в сети

#5 15.11.2020 20:22:08

Re: Есть ли способ вручную обновить updated_at через конструктор запросов?

DB::update("UPDATE `goods` SET `volume` = $request->volume, `price` = $request->price, `updated_at` = Carbon::now() WHERE `id` = $id");
Ну, по идее такой запрос должен срабатывать? Он выдает ошибку описанную выше.

Не в сети

#6 15.11.2020 20:27:28

Re: Есть ли способ вручную обновить updated_at через конструктор запросов?

А в чем проблема обновить через Eloquent?

Никаких проблем. У меня все запросы к бд в коде через DB, а тут ни с того, ни с другого неохота разбавлять код или все исправлять.
У меня привычка уже сложилась использовать sql в чистом виде, мне так больше нравится.

Изменено evg1401 (15.11.2020 20:30:43)

Не в сети

#7 15.11.2020 21:36:10

Re: Есть ли способ вручную обновить updated_at через конструктор запросов?

Странно. Зачем тогда вообще использовать фреймворк, если вам нравится писать больше кода ручками? Неужели этот ваш запрос выглядит лучше чем мой?

$good->update($request->all());

Не в сети

#8 15.11.2020 22:23:39

Re: Есть ли способ вручную обновить updated_at через конструктор запросов?

В запрос-то все равно надо вставлять имена полей и таблиц, так что великой разницы с моей точки зрения нет. А laravel мне нравится в первую очередь не из-за возможностей Eloquent.

Не в сети

#9 15.11.2020 22:45:08

Re: Есть ли способ вручную обновить updated_at через конструктор запросов?

Не всегда нужно все подставлять. В данной ситуации мой запрос абсолютно эквивалентен вашему, но короче раз в 5. И это только на одном запросе. Дело, конечно, ваше. Если вам так принципиально делать это с использованием DB, то попробуйте заменить Carbon::now() на now(). Если не сработает, то приведите полный текст ошибки.

Не в сети

#10 15.11.2020 23:55:27

Re: Есть ли способ вручную обновить updated_at через конструктор запросов?

В данном случае request->all() не обойтись, мне же все равно нужно указать, что обновлять.
now() тоже пробовал и судя по ошибке результат еще более бесполезен, т.к. now() вообще ничего не подставляет и интерпретируется прямо как строка.
В общем почему мускул ругается не понятно, пока обойдусь отдельным запросом для даты. Спс

Не в сети

#11 16.11.2020 00:14:03

Re: Есть ли способ вручную обновить updated_at через конструктор запросов?

Ну ты всегда можешь использовать

$request->only(['volume', 'price'])->all()

Это все равно короче

Не в сети

#12 16.11.2020 01:37:55

Re: Есть ли способ вручную обновить updated_at через конструктор запросов?

Бесспорно! Со следующим сайтом попробую)

Не в сети

Подвал раздела