$model->save()
の後に、またはそれ以前にカスタムコードを実行したい場合は、Yii2
です。私はグローバルcomponents
を使用してのように、これを実行したい
など
私がしたい。このためので、私は、ユーザーがデータベーステーブル内の任意の行を挿入または更新回数を格納するために、ユーザーのアクティビティログを作成したいですこれまでデータがテーブルに挿入または更新されたときにいくつかのコードを実行します。
ご意見やご提案をいただければ幸いです。
$model->save()
の後に、またはそれ以前にカスタムコードを実行したい場合は、Yii2
です。私はグローバルcomponents
を使用してのように、これを実行したい
など
私がしたい。このためので、私は、ユーザーがデータベーステーブル内の任意の行を挿入または更新回数を格納するために、ユーザーのアクティビティログを作成したいですこれまでデータがテーブルに挿入または更新されたときにいくつかのコードを実行します。
ご意見やご提案をいただければ幸いです。
Yii2 ActiveRecord
クラスは、beforeSave
およびafterSave
の方法を有する。 https://github.com/yiisoft/yii2/blob/master/framework/db/BaseActiveRecord.php#L926
しかし、データベースのトリガーでこのような操作を行う方がよいでしょうか?
と記載されており、ActiveRecord
は、beforeSaveとafterSaveの方法を有する。
新しいレコード(および既存のレコードが更新されたときの更新日)に作成された日付を格納するために、次のようなものを使用します。この例のコードは、もちろん簡単ですが、必要な任意のコードを使用することができます。レイアウトと、新しいレコードと既存のコードを分割する方法を参照してください。
このオーバーライドされたメソッドは、親beforeSave
も正しく呼び出すことができるようにActiveRecord
を拡張するすべてのモデルクラスに追加することができます。追加するために編集され
/**
* @inheritdoc
*/
public function beforeSave($insert)
{
if ($insert) {
// This is a new instance of modelClass, run your 'insert' code here.
$this->created_date = time();
}
// Anything else will be run any time a model is saved.
$this->updated_date = time();
return parent::beforeSave($insert);
}
: をコードが実行される場合は、あなたが形質を作成し、一つの場所に動作を変更することができるように、各モデルに形質を使用することができ、各モデルでも同じです。または、カスタムのActiveRecord
クラスを作成して、各サブクラスに対してbeforeSave
メソッドをオーバーライドします。
新しいクラス\ Yiiの\ DB \ ActiveRecordの
使用して、すべてのプロジェクトのモデルに
例MyActiveRecord拡張拡張(MyActiveRecord)を作成します。プロジェクトでは
class MyActiveRecord extends \yii\db\ActiveRecord
{
public function afterSave($insert, $changedAttributes){
//This will called after every model saved
return parent::beforeSave($insert,$changedAttributes);
}
}
を他のモデル
class Customer extends app\models\MyActiveRecord
{
}
コンポーネントとして、あるいはグローバルな機能として使いたいですか?私はほぼ80モデルのファイルを持っており、私はすべてのファイルを編集し、そこにこのコードを書くのは難しいです。 –
コンポーネントとして、またはグローバル関数として使用します。私はほぼ80モデルのファイルを持っており、私はすべてのファイルを編集し、そこにこのコードを書くのは難しいです。 @FahadAli; –
;その場合、おそらく特性やカスタムスーパークラスですか? –
あなたは私に何かを提案できますか –