ホームページ >PHPフレームワーク >YII >yii2 アフターセーブの使い方
保存後、yii2 は aftersave メソッドを呼び出します。Aftersave が行うことは 1 つだけです。それは、対応するイベント イベント EVENT_AFTER_INSERT または EVENT_AFTER_UPDATE をトリガーすることです。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 サイトの他の関連記事を参照してください。