PHP:根据跨表的值在 15 分钟后删除记录

PHP: Delete records after 15 minutes based on values across different tables

我创建了一个页面来预订图书馆的房间。每当用户过来拿钥匙时,其条目的 "checked-out" 列就会更新为“1”。用户最多可以迟到 15 分钟。 15 分钟后预订将被删除,以便其他用户可以预订房间。

table room_reservation 有一个名为 reservation_id 的列。此列中的数字用于另外两个 table。持续时间、预订所有者和一些其他信息存储在此 table.

table reservation_checked_out 的列 checked_out(默认情况下 0)保持值 0 或 1。另一列是 entity_id,其中存储钥匙已签出的预订信息。此 table 中的 Entity_idtable room_reservation 中的 reservation_id 匹配。

table reservation_datetime 保留在 reservation_datetime_value 栏中,表示何时进行预订,entity_id 栏中保留。再次说明:此 table 中的 entity_idtable room_reservation.

中的 reservation_id 匹配

如果密钥未在 table reservation_checked_out.checked_out 中签出,但预订在 15 分钟前开始于 [,我如何删除 table room_reservation 中的预订=42=] reservation_datetime.reservation_datetime_value?

关于如何使这项工作有任何想法吗?

试试这个 SQL 查询:

DELETE r.* FROM `room_reservation` r INNER JOIN `reservation_checked_out` c ON (c.entity_id = r.reservation_id), `reservation_datetime` d ON (d.entity_id = r.reservation_id) WHERE c.checked_out = 0 AND d.reservation_datetime_value <= NOW() - INTERVAL 15 MINUTE;

您可以通过 PHP 使用 cron 作业执行此操作。