Использование оператора SQL 'AS' в Yii CDBCriteria - PullRequest
0 голосов
/ 13 февраля 2012

Может ли кто-нибудь сказать мне, как использовать оператор 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';

Спасибо за любые советы или помощь заранее!:)

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Используете ли вы это с CActiveDataProvider для активного класса записи? Если это так, попробуйте определить расстояние в этом классе.

0 голосов
/ 15 июня 2013

Используйте 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...