溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用Yii2框架怎么實現(xiàn)一個批量添加數(shù)據(jù)功能

發(fā)布時間:2020-12-28 15:48:55 來源:億速云 閱讀:403 作者:Leah 欄目:開發(fā)技術(shù)

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)使用Yii2框架怎么實現(xiàn)一個批量添加數(shù)據(jù)功能,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

表結(jié)構(gòu)

//test 
id 
name

我們現(xiàn)在就是要在yii2中對這張數(shù)據(jù)表批量插入10條數(shù)據(jù)

我們想要的方式肯定是下面這樣的,一條sql多么干脆直接了事

insert into test (name) values ('zhangsan'), ('lisi');

分析都分析完了,好吧,趕緊看看具體實現(xiàn)

//假如 $names = ['zhangsan', 'lisi']; 
$data = []; 
foreach ($names $k => $v) { 
$data[] = [$v]; 
} 
Yii::$app->db->createCommand()->batchInsert('test', ['name'], $data)->execute();

我相信很多人都是沖著AR能不能實現(xiàn)批量插入來的,理由無非就是更安全更方便操作唄。但是官方手冊貌似沒有,沒有,沒有。。。心都碎了,竟然沒有,至少我沒有找到,你找到了請點擊原文找到我并聯(lián)系我,我也si分的需要方法啊。

不過不巧的是,我找到一個跟AR相關(guān)聯(lián)的操作方法,我們共同分享參考一下看看具體怎么回事

假設(shè)有一個Post類的數(shù)組 $models,你就可以這樣操作

use yii\helpers\ArrayHelper; 
$rows = []; 
foreach ($models as $model) {
if ($model->validate()) { 
$rows[] = $model->attributes;
} 
} 
$rows = ArrayHelper::getColumn($models, 'attributes'); 
$postModel = new Post; 
Yii::$app->db->createCommand()->batchInsert(Post::tableName(), $postModel->attributes(), $rows)->execute(); 
//當(dāng)然啦,上面給出的是插入所有的字段,但事實往往事與愿違,也簡單,稍作調(diào)整即可 
$rows[] = [ 
'title' => $model->title, 
'content' => $model->content, 
]; 
Yii::$app->db->createCommand()->batchInsert(Post::tableName(), ['title', 'content'], $rows)->execute();

上述就是小編為大家分享的使用Yii2框架怎么實現(xiàn)一個批量添加數(shù)據(jù)功能了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI