2015-02-09 31 views

回答

0

首先,您不應該使用db_delete()刪除多個記錄。它只是用於單個記錄刪除,它檢查外鍵約束,以確定如果可能,在記錄上執行邏輯刪除或物理刪除。以下是來自its documentation的報價:

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

+0

謝謝你的回答。這對我幫助很大。 – 2015-02-09 14:17:49