तो, क्या ActiveRecord के साथ एक क्वेरी में एकाधिक पंक्तियां डालना संभव है, या इसके लिए डीएओ का उपयोग करना बेहतर है?ActiveRecord बैच डालने (yii2)
उत्तर
आप yii\db\Command
की विधि का उपयोग कर सकते हैं। विवरण देखें here। ActiveRecord
के साथ इसका उपयोग करते समय सुनिश्चित करें कि डालने से पहले सभी डेटा मान्य करें।
$rows = [];
foreach ($models as $model) {
if (!$model->validate()) {
// At least one model has invalid data
break;
}
$rows[] = $model->attributes;
}
मॉडल सत्यापन आपकी $rows
सरणी के निर्माण के लिए ArrayHelper
का उपयोग करके उपरोक्त शॉर्ट कोड कर सकते हैं की आवश्यकता नहीं है, तो:
आप यह मानते हुए $ वर्ग Post
के साथ मॉडल, इसे इस तरह किया जा सकता है की सरणी है।
use yii\helpers\ArrayHelper;
$rows = ArrayHelper::getColumn($models, 'attributes');
फिर बस बैच डालने निष्पादित करें:
$postModel = new Post;
Yii::$app->db->createCommand()->batchInsert(Post::tableName(), $postModel->attributes(), $rows)->execute();
पी.एस. $postModel
अभी एटिरबूट नाम सूची खींचने के लिए उपयोग किया जाता है, आप इसे अपने $ मॉडल सरणी में किसी मौजूदा $ मॉडल से भी खींच सकते हैं।
आप सभी आप इसे निर्दिष्ट कर सकते हैं जिम्मेदार बताते हैं जब $rows
सरणी भरने सम्मिलित करने के लिए की जरूरत नहीं है:
$rows[] = [
'title' => $model->title,
'content' => $model->content,
];
भूल ['title', 'content']
को $postModel->attributes
को बदलने के लिए न करें।
बड़ी मात्रा में विशेषताओं के मामले में आप डालने के लिए सटीक विशेषताओं को निर्दिष्ट करने के लिए कुछ सरणी फ़ंक्शंस का उपयोग कर सकते हैं।
- 1. ActiveRecord Yii2
- 2. Yii2 ActiveRecord मॉकरी
- 3. Yii2 - ActiveRecord से Array
- 4. yii2 डालने क्वेरी
- 5. MySQL बैच डालने
- 6. Yii2: बचाने()
- 7. कोडइग्निटर activerecord, अंतिम डालने आईडी पुनर्प्राप्त करें?
- 8. yii2
- 9. बैच डालने नोड्स और संबंधों neo4jclient
- 10. Yii2 - मॉडल Yii2
- 11. yii2
- 12. Yii2
- 13. Yii2
- 14. yii2
- 15. YII2
- 16. Yii2
- 17. Yii2
- 18. Yii2
- 19. Yii2
- 20. yii2
- 21. Yii2
- 22. yii2
- 23. YII2
- 24. yii2
- 25. Yii2
- 26. yii2
- 27. yii2:
- 28. Yii2
- 29. yii2
- 30. Yii2
तो, जवाब नहीं है? मुझे डीएओ का उपयोग करना चाहिए। – user1561346
मुझे लगता है कि वर्तमान में ActiveRecord इस बॉक्स के बाहर का समर्थन नहीं करता है। आप कुछ और शोध कर सकते हैं, लेकिन मुझे यह नहीं मिल रहा है। – arogachev
$ postModel-> गुण $ post होना चाहिए मॉडल-> विशेषताओं() – Dodo