2014-01-23 48 views
2

如何修改我的推動查詢以獲得與以下MySQL查詢相同的結果?Concat_ws in propel

SELECT v.id,CONCAT_WS(" ",b.name,v.model) AS car_name 
FROM vehicle v 
JOIN account_vehicle av ON av.account_id=:uid 
LEFT JOIN brands b ON b.id=v.manufacturer 
WHERE av.vehicle_id=v.id 

現在我有類似的東西

$query = VehicleQuery::create('v') 
->joinAccountVehicle('av') 
->leftJoinBrands('b') 
->select(array('v.Id', 'b.Name', 'v.Model')) 
->where('av.VehicleId=v.Id') 
->find(); 

我如何修改推進使用 - 得到同樣的結果呢?我在propel中遇到了concat_ws函數的問題。 我已經使用了標準模型的嘗試 - 但我不能添加連接表(標準要求TABLEPEER:COLUMN_NAME的,並拒絕我的別名)

+0

下面的問題可能會有所幫助: [如何在Propel中使用MySQL函數](http://stackoverflow.com/a/260263/3182500)。 – ragol

+0

嗯填充對象也不是正確的方式,這是什麼時候使用它 - 我放棄了使用活動查詢的所有好處。 – Axel

回答

1

嘗試是這樣的:

$query = VehicleQuery::create('v') 
->joinAccountVehicle('av') 
->leftJoinBrands('b') 
->select(array('v.Id', 'b.Name', 'v.Model','CONCAT_WS(" ",b.name,v.model) AS car_name')) 
->where('av.VehicleId=v.Id') 
->find(); 
+0

檢查對應於您的MySQL服務器版本的手冊,以便在'AS'附近使用正確的語法CONCAT_WS(「」,b.name,v.model)AS car_name「FROM'vehicle' INNER JOIN'accoun'at line 1' 所以你可以看到 - 這concat_ws被視爲一個別名 – Axel