3

在 yii2 中只有 batchInsert 可用,在 yii2bacthUpdate中不可用,我们如何像 Codeigniter 一样在 yii2 中做到这一点batchUpdate

4

5 回答 5

5

在您的模型上使用 updateAll()。

Customer::updateAll(['status' => 1], 'status = 2');

来自 Yii 2文档

希望能帮助到你!

于 2018-03-17T13:52:44.803 回答
4

请试试这个

Yii::$app->db->createCommand()
            ->update(self::tableName(), 
            [ 'field1'=>$value1 ], //columns and values
            [ 'field2'=>$value2, 'field3'=>$value3 ]) //condition, similar to where()
            ->execute();
于 2016-10-18T15:27:36.690 回答
3

有一些事实。

起初这里没有batchUpdates,但是batchInsert 是存在的。

其次,来自 Yii core 的一位男士在俄罗斯论坛上表示,Yii2 Query builder 中没有 batchUpdate,因为它过于具体,无法针对各种 DB 系统实现。

于 2015-04-20T03:02:10.560 回答
0

我们可以用与 batchInsert 相同的方式来做,只用更新替换它我举个例子:

//table columns
$colums = ['reportCode','idActivity','requirement','direction','area'];

//where $_POST['data'] are data to be actulate received from the view
$arrayInserts2 = array();
foreach ($_POST['data'] as $key => $value) {
    $arrayInserts2[] =  [ 'reportCode'=>$code,
                          'idActivity'=> $key,
                          'requirement' => $value,
                          'direction' => $_POST['direction'][$key],
                          'area' => ''
                        ];
}

//runs the update of multiple records
$updateRecord = Yii::$app->db->createCommand()->update('table_name', $colums, $arrayInserts2)->execute();

通过这种方式,我们可以在一次操作中更新多条记录。

于 2021-12-09T17:58:09.753 回答
0

foreach ($arr_data as $data) { $update_membership[] = Yii::$app->db->createCommand() ->update( table_name, [ field_name=> value, ], [ id=> $data[ id], ])- >执行();}

于 2022-01-02T10:15:34.263 回答