Rumah  >  Soal Jawab  >  teks badan

Laksanakan semua pertanyaan SQL dalam penghijrahan yii2

Saya cuba melakukan migrasi yang melaksanakan berbilang pertanyaan pada jadual berbeza pada masa yang sama

$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();

Tapi akhirnya, saya hanya ada satu permintaan pertama UPDATE card_series SET Code = 903 WHERE ID = 1600;

Saya cuba mencetak pembolehubah $sql dan semua permintaan ada di sana tetapi hanya permintaan pertama telah dilaksanakan

Apakah yang boleh saya lakukan untuk membuat semua permintaan dilaksanakan satu demi satu?

P粉505450505P粉505450505379 hari yang lalu534

membalas semua(1)saya akan balas

  • P粉605233764

    P粉6052337642023-09-07 09:11:40

    Anda boleh mencuba kaedah berikut.

    public function safeUp()
    {
        $query = "你的查询语句";
        $this->execute($query);
    }

    balas
    0
  • Batalbalas