Удалить строку из БД после выполнения определенного условия в laravel - PullRequest
0 голосов
/ 12 апреля 2019

В моей таблице есть данные id post_id description and dispose_time. Я хотел удалить данные из БД, если текущее время и дата больше текущего времени.

 $post = Post::delete()->where('dispose_time' > DATE_SUB(NOW())), INTERVAL 10 MINUTE));

как то так. это выдает мне ошибку, и dispose_time в моей БД в формате временной метки примерно такой 1555107000. Любая помощь приветствуется.

Ответы [ 3 ]

0 голосов
/ 12 апреля 2019

Наконец, используйте предложение delete, например:

Post::where("dispose_time", ">", now()->addMinutes(-10)->toDateTimeString())->delete();
0 голосов
/ 12 апреля 2019

Используйте Carbon для времени в Laravel.

$post = Post::where('dispose_time', '>', Carbon::now())->delete();
0 голосов
/ 12 апреля 2019

На основании предоставленной вами информации вам следует использовать метод whereRaw, а не where, поскольку вы используете SQL в качестве предложения where.Кроме того, delete() должен быть последним вызванным методом.Ваш код будет следующим:

Post::whereRaw("`dispose_time` > DATE_SUB(NOW(), INTERVAL 10 MINUTE)")->delete();

Поскольку вы используете Laravel, он поставляется с пакетом Carbon, и вы также можете сделать следующее

Post::whereDate('dispose_time', '>', Carbon\Carbon::now()->addMinutes(-10))->delete();
...