我在使用 Propel 1.6 提供的方法重写一个简单的查询时遇到了很多麻烦。
查询如下:
SELECT type_id, COUNT(id) as `count` FROM visit GROUP BY type_id;
使用 Propel,我编写了以下内容:
$visitCount = VisitQuery::create()
->withColumn('COUNT(id)', 'count')
->groupBy('TypeId')
->find();
这会生成以下查询:
SELECT visit.ID, visit.JOB_ID, visit.ENGINEER_ID,
visit.TYPE_ID, visit.VISIT_DATE, visit.STATUS, COUNT(id) AS count
FROM `visit`
GROUP BY visit.TYPE_ID
哪个有效,但我只需要列type_id
和count
,所以我尝试添加以下内容:
$visits = VisitQuery::create()
->withColumn('COUNT(id)', 'count')
->select(array('TypeId'))
->groupBy('TypeId')
->find();
这会生成以下(工作)查询:
SELECT COUNT(id) AS count, visit.TYPE_ID AS "TypeId"
FROM `visit` GROUP BY visit.TYPE_ID
但是,我不想为该type_id
列起别名。我尝试将实际的列名传递给select
数组 ( ->select(array('type_id'))
),但这会导致以下查询(这显然不起作用):
SELECT COUNT(id) AS count, AS "type_id" FROM `visit` GROUP BY visit.TYPE_ID
如何在type_id
没有别名的情况下检索该列?