Php 选择带有条件和别名的表达式

Php 选择带有条件和别名的表达式,php,mysql,yii,Php,Mysql,Yii,在MySql中,您可以有这样一个查询 SELECT d., d.is_new, ( d.distance - 1 ) AS `dist` FROM `table` AS d WHERE d.is_new!='1' HAVING `dist` <= 10 知道我缺少什么吗?尝试在Active Record类中添加公共$dist属性 执行活动记录查找查询时,将对每个结果行调用populateRecord(),并检查模型属性是否存在,或者列名是

在MySql中,您可以有这样一个查询

SELECT d., d.is_new, 
      ( 
        d.distance - 1 
      ) AS `dist` 
FROM `table` AS d
WHERE d.is_new!='1' 
HAVING `dist` <= 10

知道我缺少什么吗?

尝试在Active Record类中添加公共$dist属性

执行活动记录查找查询时,将对每个结果行调用populateRecord(),并检查模型属性是否存在,或者列名是否在数据库架构中定义


$model->dist现在应该可以在使用您的作用域的实例上工作。

wow添加
public$dist工作!还是不明白为什么。我不太明白医生的解释。很抱歉,我是新手。ActiveRecord需要一个地方来存储结果。与记录的列属性不同,
dist
不是模型的属性,因此除非手动提供公共属性,否则赋值不会发生。
public function scopes()
    {
        return array(
            '_distance'=>array(
                    'alias' => 'd',
                    'select'=>array('d.id, d.is_new, 
                                        ( 
                                            d.distance - 1 
                                        ) AS `dist`'
                                    ),
                    'having'=>'`dist` <= 10',
                    'condition'=>'d.is_new!="1"'
                )
        );
    }
$dataProvider=new CActiveDataProvider(Bla::model()->_distance(), ..... );
class Bla extends CActiveRecord
{
    public $dist;

    //rest of your model
}