簡體   English   中英

CakePHP刪除5天以上的記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM