Удалите строки старше 30 дней С помощью Laravel Eloquent ORM

#laravel #eloquent

Вопрос:

Я пытаюсь удалить записи из таблицы базы данных старше 30 дней. Я не выполнил код, потому что хотел проверить, правильно ли я это делаю.

 AppMyTable::whereDate( 'created_at', '<=', now()->subDays( 30 ) )->delete();
 

Это правильный способ удаления строк старше 30 дней из таблицы? Кроме того, что произойдет, если он обнаружит нулевые записи старше 30 дней, выдаст ли он ошибку исключения или просто запустится изящно?

Ответ №1:

  1. У вас опечатка. Попробуй

MyTable::whereDate( ‘created_at’, ‘<=’, УглеродУглерод::сейчас()->субБоты(30)-<=’, УглеродУглерод::сейчас()->>удалить();

  1. Это было бы изящно

Комментарии:

1. Если я сделаю AppMyTable::whereDate( ‘created_at’, ‘<=’, сейчас()->субботы( 30 ) )-<=’, сейчас()->>get(); это работает, действительно ли мне нужно поместить CarbonCarbon:: перед now()?

2. нет, в этом нет необходимости.

Ответ №2:

Попробуй это —

 $from= Carbon::now()->subDays(30)->toDateString();

$current = Carbon::now()->toDateString();

ModelName::whereBetween('created_at', array($diff,$current))
           ->delete();
 

Надеюсь, это сработает идеально! Пожалуйста, также дайте мне знать, работает он или нет!

Комментарии:

1. Зачем использовать toDateString()? Действительно ли это необходимо?

2. Функция toDateString() возвращает только дату и время в виде строки.