Я удаляю несколько записей в течение периода, используя db_delete()
в PHPLucidFrame. Есть ли способ добиться этого?
Во-первых, вы не должны использовать 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 по крайней мере.
Других решений пока нет …