如何定义Yii模型关系以从单个查询中检索最大和最小价格?
SELECT MAX(`price`) as `maxPrice`, MIN(`price`) as `minPrice`
FROM `price` WHERE object_id = :objectId
object_id
- 外键。
我想使用关系来获取最低和最高价格,例如$object->minPrice
,$object->maxPrice
。
我在寻找统计关系,但这种关系只允许检索单列。
答案 0 :(得分:0)
在你的模型关系函数中,你可以做这样的事情
class MyModel extends ActiveRecord {
...
public function relations(){
return array(
...
'maxPrice'=>array(self::STAT, 'Price','object_id','select'=>'MAX(price)'),
'minPrice'=>array(self::STAT, 'Price','object_id','select'=>'MIN(price)'),
);
}
}
除了COUNT(*)
之外,STAT关系支持其他统计表达式,这是默认值,请参阅Statistical Queries上的文档和CStatRelation上的API参考