在MySql中,你可以有这样的查询
SELECT d., d.is_new,
(
d.distance - 1
) AS `dist`
FROM `table` AS d
WHERE d.is_new!='1'
HAVING `dist` <= 10
如何在我的模型中使用我的范围功能在Yii 1.1.15中完成这项工作?现在我有了这个
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"'
)
);
}
查询有效,当我调用dist
时,它只是不会返回_distance
列。当我在phpmyadmin中运行查询时,它也能正常工作。
$dataProvider=new CActiveDataProvider(Bla::model()->_distance(), ..... );
知道我错过了什么吗?
答案 0 :(得分:0)
尝试在Active Record类中添加public $ dist属性。
执行Active Record find查询时,会在每个结果行上调用populateRecord(),并检查是否存在Model Property或者是否在数据库模式中定义了列名。 http://www.yiiframework.com/doc/api/1.1/CActiveRecord#populateRecord-detail
class Bla extends CActiveRecord
{
public $dist;
//rest of your model
}
$ model-&gt; dist现在可以在使用您的范围的实例上使用。