是否可以使用 Doctrine QueryBuilder 构建 INSERT INTO SELECT 查询?

mnv*_*mnv 6 php mysql symfony doctrine-orm dbal

我有一些标准,需要使用该标准基于 SELECT 创建 INSERT 查询。

查询应该是这样的:

INSERT INTO mytable (field1, field2)
SELECT f1, f2
FROM mytable2
JOIN mytable3 ON mytable3.field3 = mytable2.field2
WHERE mytable3.somefield = 'somevalue'
Run Code Online (Sandbox Code Playgroud)

编辑:

我知道如何构建 INSERT INTO VALUES 查询。但是我在 Criteria 对象中有 SELECT 的条件,我需要使用它们来构建 INSERT。

我需要这样的东西

public function myInsert(Criteria $criteria)
    $qb = new QueryBuilder;
    $qb->insert('mytable')
        ->values('field1, field2') // Is it possible 
        ->select('f1, f2')         // somthing like this?
        ->from('mytable2')
        ->innerJoin('mytable2', 'mytable3', 'mytable3', 
            'mytable3.field3 = mytable2.field2')
        ->where($criteria);
    $qb->execute();
}
Run Code Online (Sandbox Code Playgroud)

小智 0

我认为你必须建立自己的陈述。应该是这样的。

            $sql ="INSERT INTO mytable (field1, field2)
                   SELECT f1, f2
                   FROM mytable2
                   JOIN mytable3 ON mytable3.field3 = mytable2.field2
                   WHERE mytable3.somefield = 'somevalue'";
            /** @var Connection $connection */
            $connection = GeneralUtility::makeInstance(ConnectionPool::class)
                ->getConnectionForTable(self::TABLENAME);
            /** @var DriverStatement $statement */
            $statement = $connection->prepare($sql);
            $statement->execute();
Run Code Online (Sandbox Code Playgroud)