Sew*_*wdn 3 native doctrine-orm
如何在Doctrine 2中执行本机sql查询,执行更新语句?EntityManager上的createNativeQuery方法需要第二个参数(ResultSetMapping)才能将结果集映射到Objects.
但是在更新(或插入,设置或......)时,没有映射的结果集.传递null或只是新的ResultSetMapping(),会出错.
是否仅支持本机sql的选择查询?
qui*_*tin 11
基本上同上,用faken,
这来自文档:
如果要执行DELETE,UPDATE或INSERT语句,则无法使用Native SQL API,并且可能会抛出错误.使用EntityManager#getConnection()访问本机数据库连接并为这些查询调用executeUpdate()方法.
一个使用注意事项是可以从EntityManager检索连接对象:
$conn = $entityManager->getConnection();
$rowsAffected = $conn->executeUpdate($sql, $params, $types);
Run Code Online (Sandbox Code Playgroud)
更新语句通常非常简单,因此您不妨使用正常的 Doctrine2 方式(即以编程方式更新实体并调用 EntityManager::flush() 或使用DQL Updates)。
话虽如此,如果你真的想使用普通的 SQL,你总是可以这样做:
保留与 Doctrine2 创建连接时获得的数据库连接对象:
$connection = \Doctrine\DBAL\DriverManager::getConnection($dbConfig->toArray(),null,$evm);
使用连接对象中的可用方法执行您想要的任何 SQL ,例如:
$连接->executeUpdate($sql, $params, $types); $连接->exec($sql); ...
| 归档时间: |
|
| 查看次数: |
10115 次 |
| 最近记录: |