使用doctrine2从table_b INSERT INTO table_a SELECT *

时间:2012-01-10 17:10:37

标签: mysql doctrine-orm

教义2是否支持某种形式 “选择进入”-syntax?

在纯MySQL中,它将是这样的:

INSERT INTO tbl_temp2 (fld_id)
  SELECT tbl_temp1.fld_order_id
  FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

我检查了手册,但没有成功。

1 个答案:

答案 0 :(得分:7)

我在版本2.3.1中引用了Doctrine: 在此版本中,您可以从ORM / EntityManager获取与数据库的当前连接。 只有一个连接(这在Doctrine 1中是不同的)。 以下是insert-select-task对我有用的内容:

$db = $this->_em->getConnection();
$query = "INSERT INTO table2 (myfield) SELECT table1.myfield FROM table1 WHERE table1.id < 1000";
$stmt = $db->prepare($query);
$params = array();
$stmt->execute($params);

这里还有一个有趣的答案:Using Raw SQL with Doctrine带有代码示例,如何检查PDO兼容性的“原始sql”。