ホームページ >PHPフレームワーク >YII >yii2 アフターセーブの使い方

yii2 アフターセーブの使い方

(*-*)浩
(*-*)浩オリジナル
2019-11-05 11:48:067720ブラウズ

保存後、yii2 は aftersave メソッドを呼び出します。Aftersave が行うことは 1 つだけです。それは、対応するイベント イベント EVENT_AFTER_INSERT または EVENT_AFTER_UPDATE をトリガーすることです。Yii2

yii2 アフターセーブの使い方

#ユーザーが送信したデータをルックテーブルに保存する必要があり、同時にフォーム内のadd_img画像アドレス配列が保存されます。それぞれlookmeidaテーブル。 (推奨される学習:

yii チュートリアル)

画像を保存するこの追加機能は、コントローラー コードを変更する必要はありません。モデルの afterSave ライフ サイクル関数の助けを借りて、自動的に役立ちます。仕上げる。原則として、look テーブルのレコードが保存 (または変更) された後、lookid が生成され、この lookid と mediaurl を lookmedia テーブルに保存します。


  public function afterSave($insert,$changedAttributes)
    {        if (Yii::$app->id=='app-backend'){            //保存图片字段
            $add_imgarr=$this->add_img;            if ($add_imgarr){                foreach (array_filter($add_imgarr) as $mediaurl){
                    $lookmedia=new Lookmedia();
                    $lookmedia->lookid=$this->lookid;
                    $lookmedia->mediaurl=$mediaurl;
                    $lookmedia->type=0;
                    $lookmedia->save();
                }
            }
        }        if (parent::afterSave($insert,$changedAttributes)) {            return true;
        }else return false;
    }

ここでは、いくつかの落とし穴として考えられる 3 つの点のみについて説明します。

1) afterSave、$insert、および $changedAttributes のパラメータは固定の記述方法であるため、次のことを行う必要があります。存在しない場合は、エラーが報告されます。

2) 関数内、ローカル環境では前に書いたのがbeforeSaveでエラーは報告されず正常に動作しましたが、サーバーに移植するとエラーが報告されたため、 afterSaveに変更したら正常になりました。

3) 実際の測定によると、新しいロジックは親関数の外側に配置する必要があります。そうしないと実行されません (画像はアップロードされましたが、lookmedia テーブルにレコードがありません)

以上がyii2 アフターセーブの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。