繁体   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