基本上,我想在CakePHP中执行此操作:
delete from myTable as mytable where datediff(now(), mytable.date) > 5
我不知道如何使用$this->Model->delete()
功能?
答案 0 :(得分:3)
您需要使用deleteAll
:
$this->Model->deleteAll(array(
'datediff(now(), Model.date) > 5'
)) ;
答案 1 :(得分:1)
执行自定义查询的最简单方法是使用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);
答案 2 :(得分:1)
在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')]);