如何在PHPLucidFrame中使用db_delete()删除范围内的多条记录


How to delete multiple records in range with db_delete() in PHPLucidFrame?

我使用PHPLucidFrame中的db_delete()在一段时间内删除多条记录。有什么办法做到这一点吗?

首先,不应该使用db_delete()来删除多条记录。它只是针对单个记录删除,检查外键约束,以确定在可能的情况下对记录执行逻辑删除或物理删除。以下是其文件中的报价:

db_delete()是SQL DELETE操作的一种方便方法。这仅适用于单个记录的删除。语法为db_delete('table_name', $condition=NULL)。LucidFrame鼓励使用MYSQL外键约束。如果找到ON DELETE RESTRICT,则通过将当前日期/时间更新到"已删除"字段来执行软删除(逻辑删除),否则执行硬删除(物理删除)

相反,您必须使用db_delete_multi()来删除多条记录:

db_delete_multi()对于给定条件的批记录删除很有用,但它不检查外键约束。

例如,以下是如何删除使用db_delete_multi()db_and():在一段时间内创建的多个记录

db_delete_multi('post', db_and(
    array('created >=' => '2015-01-01'), 
    array('created <=' => '2015-01-31')
  )
);

更简单的解决方案是在条件数组中使用between运算符。在这种情况下,您不需要使用db_and()

db_delete_multi('post', array('created between' => array('2015-01-01', '2015-01-31')));

您至少需要使用PHPLucidFrame版本1.2