Ma table contient des données id post_id description et dispose_time
. Je voulais supprimer les données de la base de données si l'heure et la date actuelles sont supérieures à l'heure actuelle.
$post = Post::delete()->where('dispose_time' > DATE_SUB(NOW())), INTERVAL 10 MINUTE));
quelque chose comme ça. cela me donne l'erreur et le dispose_time dans ma base de données est au format d'horodatage quelque chose comme ceci 1555107000
.
Toute aide appréciée.
3 Réponses :
Sur la base des informations que vous avez fournies, vous devez utiliser la méthode whereRaw
, et non where
, car vous utilisez SQL comme clause where. De plus, delete ()
devrait être la dernière méthode à être appelée. Donc, votre code serait le suivant:
Post::whereDate('dispose_time', '>', Carbon\Carbon::now()->addMinutes(-10))->delete();
Puisque vous utilisez Laravel, il est livré avec le package Carbon et vous pouvez également faire ce qui suit
Post::whereRaw("`dispose_time` > DATE_SUB(NOW(), INTERVAL 10 MINUTE)")->delete();
Format datetime non valide: 1292 Valeur datetime incorrecte tronquée: 'dispose_time' (SQL: supprimer des messages
où 'dispose_time'> DATE_SUB (NOW (), INTERVAL 10 MINUTE))
Veuillez essayer la deuxième approche que je viens de présenter.
J'utilise lumen et je ne connais pas sa définition de quel paquet il provient
S'il ne sort pas de la boîte avec lumen, vous pouvez le vérifier ici . De plus, êtes-vous sûr que dispose_time
est configuré comme horodatage?
Je prends la date et l'heure dans postman et j'applique la fonction strtotime et dans DB c'est une chaîne
Pouvez-vous placer un exemple de valeur stockée dans votre base de données?
Utilisez enfin la clause de suppression, comme ceci:
Post::where("dispose_time", ">", now()->addMinutes(-10)->toDateTimeString())->delete();
il donne cette erreur: - Format de date / heure non valide: 1292 Valeur de date / heure incorrecte tronquée: 'dispose_time' (SQL: supprimer de messages
où 'dispose_time'> DATE_SUB (NOW (), INTERVAL 10 MINUTE))
qu'est-ce qui fait maintenant référence aussi
now () est une fonction d'assistance, retourne l'objet carbone, je l'ai à nouveau édité
Appel à la fonction non définie App \ Http \ Controllers \ now ()
Utilisez Carbon pour le temps dans laravel.
$post = Post::where('dispose_time', '>', Carbon::now())->delete();