2012-02-13 105 views
0

任何人都可以告訴我如何在CDBCriteria查詢中使用sql'AS'語句嗎?在Yii中使用SQL'AS'語句CDBCriteria

無論我累了什麼,只是將我的表的列名稱帶回數組中,並且沒有我的sql別名符號。

我想我可能已經將其添加到我的模型類,但林不知道在哪裏可以多次嘗試將其添加在後聲明。

這裏是我的,你可以看到「距離」是我的別名:

$criteria= new CDbCriteria; 
    $criteria->select='*, 3963 * acos(cos(radians('.$distanceString['latitude'].')) * cos(radians(latitude)) * cos(radians('.$distanceString['longitude'].') - radians(longitude)) + sin(radians('.$distanceString['latitude'].')) * sin(radians(latitude))) AS distance'; 
    $criteria->condition=$sqlCondition; 
    $criteria->params=$sqlVariables; 
    $criteria->order='distance'; 

感謝您的任何提示或幫助提前! :)

回答

1

您是否將此與CActiveDataProvider用於活動記錄類?如果是這樣,請嘗試在該班級中定義距離。

0

使用CDbCommand代替

 
$rawData=Yii::app()->db->createCommand() 
    ->select('*, 3963 * acos(cos(radians('.$distanceString['latitude'].')) * cos(radians(latitude)) * cos(radians('.$distanceString['longitude'].') - radians(longitude)) + sin(radians('.$distanceString['latitude'].')) * sin(radians(latitude))) AS distance') 
    ->from('TableName') 
    ->where($sqlCondition) 
    ->order('distance')->queryAll(true,$sqlVariables); 

如。加上CArrayDataProvider

 
$dataProvider=new CArrayDataProvider($rawData); 
// $dataProvider->getData() will return a list of arrays.