#laravel #laravel-5.2 #lumen #lumen-5.4
#laravel #laravel-5 #lumen #lumen-5.4
Вопрос:
В моей таблице есть данные id post_id description and dispose_time
. Я хотел удалить данные из базы данных, если текущее время и дата больше текущего времени.
$post = Post::delete()->where('dispose_time' > DATE_SUB(NOW())), INTERVAL 10 MINUTE));
что-то вроде этого. это выдает мне ошибку, и dispose_time в моей базе данных находится в формате метки времени примерно так 1555107000
.
Любая помощь приветствуется.
Ответ №1:
Наконец, используйте предложение delete, например:
Post::where("dispose_time", ">", now()->addMinutes(-10)->toDateTimeString())->delete();
Комментарии:
1. выдает следующую ошибку: — Недопустимый формат даты и времени: 1292 Усеченное неверное значение даты и времени: ‘dispose_time’ (SQL: удалить
posts
откуда ‘dispose_time’> DATE_SUB(NOW(), ИНТЕРВАЛ 10 МИНУТ))2. что теперь тоже относится
3. now() — это вспомогательная функция, возвращающая объект carbon, я отредактировал его снова
4. Вызов неопределенной функции App Http Controllers now()
Ответ №2:
Используйте углерод для времени в laravel.
$post = Post::where('dispose_time', '>', Carbon::now())->delete();
Ответ №3:
Основываясь на предоставленной вами информации, вы должны использовать whereRaw
метод, а не where
, поскольку вы используете SQL в качестве предложения where. Кроме того, delete()
должен быть вызван последний метод. Итак, ваш код будет следующим:
Post::whereRaw("`dispose_time` > DATE_SUB(NOW(), INTERVAL 10 MINUTE)")->delete();
Поскольку вы используете Laravel, он поставляется с пакетом Carbon, и вы также можете выполнить следующие действия
Post::whereDate('dispose_time', '>', CarbonCarbon::now()->addMinutes(-10))->delete();
Комментарии:
1. Недопустимый формат даты и времени: 1292 Усеченное неверное значение даты и времени: ‘dispose_time’ (SQL: удалить
posts
откуда ‘dispose_time’> DATE_SUB(NOW(), ИНТЕРВАЛ 10 МИНУТ))2. Пожалуйста, попробуйте второй подход, который я только что представил.
3. я использую lumen и не знаю его определения, из какого пакета он поступает
4. Если это не выходит из поля с lumen, вы можете проверить это здесь . Кроме того, вы уверены
dispose_time
, что она настроена как временная метка?5. Я беру дату и время в postman и применяю к нему функцию strtotime, а в БД это строка