2012-02-09 37 views
0

任何人都可以幫助我將以下SQL語句(它在我的數據庫中工作)轉換爲Yii框架CDbCriteria類格式嗎?加入Yii class CDBCriteria?

這是我的SQL:

SELECT *轎車,3963 * ACOS(COS(弧度(53.376217))* COS(弧度(car_dealers.latitude))* COS(弧度(-1.499595) - 弧度( car_dealers.longitude))+ sin(弧度(53.376217))* sin(弧度(car_dealers.latitude)))距離汽車距離JOIN car_dealers ON cars.company_id = car_dealers.company_id WHERE cars.make ='Fiat'AND cars.model ='Punto'ORDER BY距離;

這裏是我的Yii嘗試:

$criteria= new CDbCriteria; 
$criteria->alias = 'cars'; 
$criteria->select= 'cars.*, 3963 * acos(cos(radians(53.376217)) * cos(radians(car_dealers.latitude)) * cos(radians(-1.499595) - radians(car_dealers.longitude)) + sin(radians(53.376217)) * sin(radians(car_dealers.latitude))) AS distance'; 
$criteria->join='JOIN car_dealers ON cars.company_id=car_dealers.company_id'; 
$criteria->condition= 'make=:make AND model=:model'; 
$criteria->params= array('[:make] => Fiat,[:model] => Punto') 
$criteria->order='distance'; 

非常感謝你提前給任何人誰可以幫助! :)

+0

什麼是錯誤您收到?請提供更多細節。 蝙蝠,我可以看到你錯誤地使用params - $ criteria-> params = array(':make'=>'Fiat',':model'=>'Punto'); – 2012-02-10 01:41:19

+0

基本上,我的對象基於這個參數很好地回來了汽車表中的所有值,但不會將距離值帶回到對象中。 – 2012-02-10 08:49:09

+0

我希望你已經在汽車模型類中聲明瞭$ distance變量 – 2012-02-10 15:31:09

回答

0

你在這裏

$criteria->params= array('[:make] => Fiat,[:model] => Punto') 

一個錯字它應該是:

$criteria->params= array(':make' => 'Fiat',':model' => 'Punto')