Как удалить данные в пользовательском методе поиска в CakePHP 3
Я хочу удалить данные в пользовательском методе поиска.
Пользовательский метод поиска документов
Мой код:
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.
Есть ли решение для этого случая?
1 ответ
Решение
Вам придется оформить отдельный запрос. То, что вы там делаете, испортит запрос поиска, который должен быть запросом выбора.
$this
->query()
->delete()
->where(['member_status' => -1])
->andWhere(['registered >= DATE_SUB(NOW(), INTERVAL 72 HOUR)'])->execute();
использование applyOptions()
в случае, если вам нужно применить параметры поиска к запросу на удаление.
$this
->query()
->delete()
->applyOptions($options)
// ...