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
別名を付けずに列を取得するにはどうすればよいですか?