使用Propel 1.6提供的方法重寫簡單查詢時遇到了一些麻煩。使用Propel選擇特定列而不使用別名
查詢如下:
SELECT type_id, COUNT(id) as `count` FROM visit GROUP BY type_id;
使用行走,我寫了以下內容:
$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
列而不會被混淆?
或者你也可以用'VisitPeer :: TYPE_ID' ......這是一個快捷方式欄名稱基於定義的模式名稱。 – jakerella 2013-04-25 14:20:52
如果他將db列更改爲'my_type_id',那麼VisitPeer :: TYPE_ID仍然可用(並指向列)? – LeonardChallis 2013-04-25 14:52:51
不,如果他計劃改變列名並且不讓phpName改變,那麼你的方法是最好的。 (和FYI,你的方法是不錯的,這就是爲什麼我的輸入不是一個單獨的答案,只是一個側面說明:)) – jakerella 2013-04-25 15:22:31