[英]CakePHP delete records older than 5 days
基本上,我想在CakePHP中做到這一點:
delete from myTable as mytable where datediff(now(), mytable.date) > 5
而且我不知道如何使用$this->Model->delete()
函數來做到這一點?
您需要使用deleteAll
:
$this->Model->deleteAll(array(
'datediff(now(), Model.date) > 5'
)) ;
進行自定義查詢的最簡單方法是使用Model :: query方法。 這不是推薦的方法,但是似乎您想要一個快速/骯臟的答案。
$this->MyModel->query("delete from myTable as mytable where datediff(now(),
mytable.date) > 5");
如果執行此方法,請確保轉義查詢字符串以防止SQLi攻擊。
推薦方式:
Use Model::deleteAll(mixed $conditions, $cascade = true, $callbacks = false)
$conditions = array('datediff(now(), Model.date) > 5');
$this->MyModel->deleteAll($conditions,false);
在CakePHP 3.x中,您應該使用以下代碼:
// In a controller or table method.
$time = \Cake\I18n\Time::now();
$time->modify('-5 days');
$query = $this->Model->deleteAll(['Model.date <=' => $time->format('Y-m-d H:i:s')]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.