0

カスタムファインダーメソッドでデータを削除したい。

カスタム finder メソッド ドキュメント

私のコード:

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.

この場合の解決策はありますか?

4

1 に答える 1

1

別のクエリを発行する必要があります。そこで行っていることは、選択クエリであるファインダークエリを台無しにします。

$this
    ->query()
    ->delete()
    ->where(['member_status' => -1])
    ->andWhere(['registered >= DATE_SUB(NOW(), INTERVAL 72 HOUR)'])->execute();

applyOptions()ファインダー オプションを削除クエリにも適用する必要がある場合に使用します。

$this
    ->query()
    ->delete()
    ->applyOptions($options)
    // ...
于 2015-11-02T14:05:54.027 に答える