php - 在没有实体类的情况下使用 native SQL 查询

标签 php doctrine-orm symfony

我需要创建带有几个联合和子查询的本地 SQL 查询。大概是这样的:

SELECT res.id, COUNT(*) as count_ids
FROM (
    SELECT a.id FROM ... a WHERE ... LIKE ('%:param%')
    UNION ALL
    SELECT b.id FROM ... b WHERE ... LIKE ('%:param%')
    UNION ALL
    ...
) res
GROUP BY res.id
ORDER BY count_ids asc

结果与我在应用程序中使用的任何实体都不匹配。是否可以使用“匿名”对象创建 ResultSetMapping ?或者至少可以创建一个实体,在我下次更新架构时不会创建表,以便我可以将结果映射到它?

或者有没有其他任何 Doctrine 友好的方式来处理这样的查询?但是不可能对数据库进行更改,因为我正在处理无法触及的遗留问题。如果我在数据库方面做所有事情,而不涉及太多 PHP,我也非常喜欢。

最佳答案

您是否特别需要将结果映射到域对象?如果没有,您可以使用 DBAL 进行简单的旧查询,该查询将返回一个数组,详见 the Symfony2 cookbook。和 the Doctrine DBAL documentation :

$conn = $this->container->get('database_connection');
$sql = 'SELECT res.id, COUNT(*)...';
$rows = $conn->query($sql);

关于php - 在没有实体类的情况下使用 native SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6860838/

相关文章:

php 图像类型 blob 不会显示

javascript - jquery ajax - 无效的参数号

php - 使用php将目录的全部内容复制到另一个目录

php - 格式化 PHP Echo

php - 学说 2/MySQL : having trouble turning SQL left joins to DQL left joins

php - symfony doctrine 将一个实体对象移动到另一个实体类型

php - Ajax 搜索过滤器

php - symfony2/教义 2/Mysql : null values saved as empty strings

php - Symfony2 FOSRestBundle handleView() 不起作用

symfony - PhpStorm + PHPUnit 故障未显示在测试选项卡中