Как обновить строку и вернуть updated_at? - PullRequest
0 голосов
/ 18 декабря 2018

Я попытался обновить строку и вернуть значение updated_at сразу после:

$product = ProductModel::where("Id", $id)->update(["Status" => 0]);

return $product->updated_at;

Как это исправить?

Также я могу сделать это глобально для каждого обновления?

Ответы [ 4 ]

0 голосов
/ 18 декабря 2018

Функция update предназначена для обновления bulk , независимо от того, сколько строк возвращает ваш запрос.Это может быть ноль, это может быть один, это может быть тысяча.Таким образом, его возвращаемое значение просто логическое "это работало?"value.

Поскольку вы хотите обновить одну строку:

$product = ProductModel::where("Id", $id)->first();
$product->Status = 0;
$product->save();

return $product->updated_at;

Вы действительно должны сообщить Laravel о своем настраиваемом первичном ключе, чтобы вы могли использовать ProductModel::find($id) для более чистого кода.

Примечание: если у вас есть одна ProductModel в $product, и вы используете update(), вы можете сделать $product->refresh() для повторного получения ее данных из базы данных.

0 голосов
/ 18 декабря 2018

Поле updated_at будет затронуто автоматически после операции обновления, и вам не нужно делать это вручную, если вы хотите прикоснуться к отметке времени updated_at в другое время, используйте метод touch() в следующем фрагменте:

$user = User::find(1);
$user->touch();
0 голосов
/ 18 декабря 2018

проверить это:

$product = ProductModel::where("Id", $id)->first();
$product->Status = 0;
$product->save();

return $product->updated_at;
0 голосов
/ 18 декабря 2018

Эта строка кода вернет вам логическое значение.Верно для успешного обновления, ложно для без обновлений.

$product = ProductModel::where("Id", $id)->update(["Status" => 0]);

Попробуйте это:

$product = ProductModel::find($id);

$product->update(["Status" => 0]);

return $product->updated_at;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...