我想删除自定义查找器方法中的数据。
public function findPREACTIVE(Query $query, array $options) {
$query->delete()
->where(['member_status' => -1])
->andWhere(['registered >= DATE_SUB(NOW(), INTERVAL 72 HOUR)'])->execute();
return $query
->where(['email' => $options['email'], 'token_key' => $options['token_key']])
->andWhere(['member_status' => -1])
->andWhere(['registered < DATE_SUB(NOW(), INTERVAL 72 HOUR)']);
}
当我打电话给这个查找器时,我收到错误:
You cannot call all() on a non-select query. Use execute() instead.
这种情况有解决方案吗?
答案 0 :(得分:1)
您必须发出单独的查询。你在那里做什么会弄乱查询者查询,这是一个选择查询。
$this
->query()
->delete()
->where(['member_status' => -1])
->andWhere(['registered >= DATE_SUB(NOW(), INTERVAL 72 HOUR)'])->execute();
如果您需要将查找程序选项应用于删除查询,请使用applyOptions()
。
$this
->query()
->delete()
->applyOptions($options)
// ...