2014-01-23 24 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