使用没有实体类的本机SQL查询
I need to create native SQL query with couple of unions and subqueries. It'll look approximately like this:
我需要使用几个联合和子查询创建本机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
Result won't match any Entity I use in my application. Is it possible to create ResultSetMapping
with "anonymous" object? Or is it, at least, possible to create an Entity that wouldn't create table next time I update schema, so I can map results to it?
结果将不匹配我在我的应用程序中使用的任何实体。是否可以使用“匿名”对象创建ResultSetMapping?或者,至少可以创建一个实体,下次我更新架构时不会创建表,所以我可以将结果映射到它?
Or is there any other Doctrine-friendly way to deal with such query? Making changes to database isn't possible though, as I'm dealing with legacy stuff that cannot be touched. I'd also strongly prefer if I did everything on database side, not involving much of PHP in it.
或者是否有任何其他Doctrine友好的方式来处理这样的查询?但是,对数据库进行更改是不可能的,因为我正在处理无法触及的遗留内容。如果我在数据库方面做了所有事情,并且不涉及大量PHP,我也非常喜欢。
2 个解决方案
#1
39
Do you have a particular need to map results to a domain object? If not, you could use the DBAL to make a plain old query, which will return an array, as detailed in the Symfony2 cookbook and the Doctrine DBAL documentation:
您是否特别需要将结果映射到域对象?如果没有,您可以使用DBAL创建一个普通的旧查询,它将返回一个数组,详见Symfony2 cookbook和Doctrine DBAL文档:
$conn = $this->container->get('database_connection');
$sql = 'SELECT res.id, COUNT(*)...';
$rows = $conn->query($sql);
更多相关文章
- PHP面向对象笔记 —— 113 封装概念
- PHP的语言特性-面向对象和C++/java/python的相似之处
- php面向对象之抽象类和接口理解
- 键入提示 - 指定对象数组
- PHP 创建对象的两种方法
- Python:我如何从datetime.timedelta对象中获取时间?
- php如何以一个对象作为数组下标?
- 【动软.Net代码生成器】连接MySQL生成C#的POCO实体类(Model)
- php数据库数据转换为js中的json对象