3

Yii2 で新しいモデル / アクティブなレコードを保存した後、ファイルシステムでジョブをスケジュールしています。afterSave でこれを行い、取得したスケジューラのジョブ ID でレコードを更新したいと思います。

しかし、正しいプロパティをジョブ ID に設定した後、モデルで $this->update() を呼び出すと、更新が行われません。afterSave() で update() を使用するのはおそらく悪い考えですが、これに取り組む正しい方法は何でしょうか?

4

2 に答える 2

0

そこに2つのオプションがあります:

  1. モデルに追加の内部フィールドを作成します。たとえば、private $task_sended = false;afterUpdate で task_sended = true を設定し、それをチェックします。

    if (!$this->task_sended){ //タスクをスケジューラに送信 $this->task_sended = true; }

  2. DAO コマンドを使用してモデルを更新する

    \Yii::$app->db->createCommand()->update(self::tableName(), $update, ['id'=>$this->id])->execute();

于 2014-04-29T11:52:45.573 に答える