有人能告诉我如何在CDBCriteria查询中使用sql'AS'语句吗?
无论我厌倦了什么,只是将我的表的列名称带回一个数组,并且没有我的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';
提前感谢您的任何提示或帮助! :)
答案 0 :(得分:1)
您是否将此CAENTDataProvider用于活动记录类?如果是这样,请尝试在该类中定义距离。
答案 1 :(得分: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);一起
$dataProvider=new CArrayDataProvider($rawData); // $dataProvider->getData() will return a list of arrays.