Yani, ActiveRecord ile bir sorguya birden çok satır eklemek mümkün mü, ya da bunun için DAO kullanmak daha iyidir?ActiveRecord batch insert (yii2)
cevap
yii\db\Command
numaralı batchInsert()
yöntemini kullanabilirsiniz. Ayrıntılar için here. ActiveRecord
ile kullanıldığında, yerleştirmeden önce tüm verilerin doğrulandığından emin olun.
$rows = [];
foreach ($models as $model) {
if (!$model->validate()) {
// At least one model has invalid data
break;
}
$rows[] = $model->attributes;
}
modeller $rows
diziyi oluşturmak için ArrayHelper
kullanarak yukarıdaki kısa kod can doğrulama gerektiren yoksa: sizi varsayarsak
sınıfa Post
ile modeller, böyle yapılabilir $ dizi var.
use yii\helpers\ArrayHelper;
$rows = ArrayHelper::getColumn($models, 'attributes');
Sonra sadece toplu insert yürütün:
$postModel = new Post;
Yii::$app->db->createCommand()->batchInsert(Post::tableName(), $postModel->attributes(), $rows)->execute();
Not; $postModel
yalnızca attırubute adlar listesinin çekilmesi için kullanılır, bunu ayrıca $ models dizinizdeki mevcut herhangi bir $ modelinden de çekebilirsiniz.
Eğer $rows
dizi doldururken tüm bunu belirtebilirsiniz niteliklerini eklemek gerekmiyorsa:
$rows[] = [
'title' => $model->title,
'content' => $model->content,
];
['title', 'content']
için
$postModel->attributes
yerine unutmayın.
Daha fazla öznitelik olması durumunda, ekleme için tam özellikleri belirtmek için bazı dizi işlevlerini kullanabilirsiniz.
- 1. Yii2 Mockery ile ActiveRecord ile alay etme
- 2. Batch
- 3. Yii2: ActiveRecord ilişkileri tarafından yapılan sorguların önbelleğe alınması
- 4. Yii2'deki dropDownList Yii2
- 5. yii2 içinde yii2
- 6. Yay Batch
- 7. Batch script
- 8. Yii2
- 9. Yii2
- 10. Yii2
- 11. Yii2
- 12. INSERT
- 13. activerecord
- 14. ActiveRecord
- 15. Yii2-kullanıcı Yii2 Rest Api
- 16. Yii2'ye kaydetmeden önce
- 17. Bölünmüş postgresql ile hibernate insert toplu
- 18. Spring Batch: Bölümlenmiş adım
- 19. Çalışan Rolü - Azure Batch
- 20. Batch - komutu beklenmiyor
- 21. Yii2 için iç içe kümeler foreach()
- 22. Yii2 (LAMP)
- 23. Yii2 modeli
- 24. Yii2: andWhere
- 25. SQL INSERT
- 26. BULGU INSERT
- 27. INSERT [INT]
- 28. ActiveRecord :: DangerousAttributeError
- 29. ActiveRecord: nerede
- 30. ActiveRecord Has_many
Yani, cevap hayır mı? DAO kullanmalıyım. – user1561346
Bence şu anda ActiveRecord bunu kutunun dışında desteklemiyor. Daha fazla araştırma yapabilirsiniz, ancak bulamıyorum. – arogachev
$ postModel-> öznitelikleri $ postModel-> öznitelikleri olmalıdır() – Dodo