执行迁移 yii2 中的所有 sql 查询

问题描述 投票:0回答:0

我正在尝试进行一次在不同表上执行许多查询的迁移

$sql = '';

$sql .= "UPDATE card_series SET Code = 903 WHERE ID = 1600;";

$cardsSeries1600 = CardList::find()
            ->where(['seriesId' => 1600])
            ->orderBy('ID');
        $cardNum = 2;
        foreach ($cardsSeries1600->each() as $card) {
               if ($card->client_id != NULL) {
                    $sql .= "DELETE FROM client_cards WHERE card_id = ".$card->ID.";";
                }
            $number = str_pad($cardNum, 8, "0", STR_PAD_LEFT);
            $cardId = (1903).$number; 
            $sql .= "UPDATE card_list SET ID = '".$cardId."', Code = 903, Number = '".$number."' WHERE ID = ".$card->ID.";";

            $sql .= "UPDATE card_list_log SET card_id = '".$cardId."', Code = 903, Number = '".$number."' WHERE card_id = ".$card->ID.";";

            $cardNum++;
}

\Yii::$app->db->createCommand($sql)->execute();

但最后,我只有一个第一个要求

UPDATE card_series SET Code = 903 WHERE ID = 1600;

我尝试dump了

$sql
变量,所有的请求都在,但是只有第一个还在执行

我怎样才能让我所有的请求都一一执行??

php sql mysql yii2
© www.soinside.com 2019 - 2024. All rights reserved.