yii2 ActiveRecordを使用してテーブルに複数のレコードを挿入したいとします。 私はすでに私はこのコードActiveRecordを使用したyii2バッチインサート
$connection->createCommand()->batchInsert('user', ['name', 'age'], [
['Tom', 30],
['Jane', 20],
['Linda', 25],
])->execute();
を使用することができることを知っているが、このアプローチによって、私のモデルの検証が実行されていません。 と私はすでにこの質問ActiveRecord batch insert (yii2)
だけでなく、トリッキーな方法で検証を行うことによって を読みましたが、私はActiveRecordを使用してイベントをcreated_at
とupdated_at
列を埋めるためにしたいことを検討してください。
ちょうどこの
public function beforeSave($insert)
{
if (parent::beforeSave($insert)) {
if($insert)
$this->created_at = date('Y-m-d H:i:s');
$this->updated_at = date('Y-m-d H:i:s');
return true;
} else {
return false;
}
}
おかげで、 モデルがバッチ挿入以外のすべてのあなたの記録tpは起こって何かがあるように、新しいレコードを挿入する前にトリガされbeforeSaveイベントを持っている場合。 この問題はどうしたらいいですか? – mhndev
はい、私はイベントについて忘れました。私は 'beforeSave'と' aftreSave'イベント( '\ yii \ db \ ActiveRecord :: insertInternal'に基づく)のサンプルサポートを追加しました。もちろん、記述されたアプローチは '$ model-> save()'の完全な代替ではありません。挿入が成功した後、少なくともPKを埋めることはできません。 – IStranger