2012-02-13 6 views
0

誰でもCDBCriteriaクエリでSQL ASステートメントを使用する方法を教えてもらえますか?Yii 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'; 

ご協力ありがとうございました! :)

答えて

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. 
関連する問題