在 yii 迁移中获取 select 查询的数据

Fetch data for a select query in yii migrations

我正在使用 yii 迁移创建一个父子 table,子 table 上有一个外键。我尝试使用 execute 但这并没有帮助我获取所需的数据。有没有一种方法可以查询父 table 并将父 ID 作为外键插入子 table 中?在 phinx 迁移中使用的类似 fetch()/fetchAll() 的东西。

    $this->batchInsert('{{%parent_table}}',
                ['name'],
                [
                    ['P1'],
                    ['P2'],
                    ['P3'],
                    ['P4']
                ]
            );
    $a = $this->execute("select * from parent_table where name = 'P1'");
    // get the data from the table that will get me the id from the above query.

    $this->batchInsert('{{%child_table}}',
                [['name'],['parent_id']],
                [
                    ['C1','<parent id>'],
                    ['C2','<parent id>'],
                    .
                    .
                    .
                ]
            );

您需要使用

$sql = <<<SQL
select * from parent_table where name = 'P1'
SQL;

$res = Yii::$app->db->createCommand($sql)->queryAll();

$this->execute() 用于执行 sql 语句,如更新或删除

编辑

最好使用 $this->db 而不是 Yii::$app->db 以确保您在同一个数据库上 运行,如评论中所述