Activerecord Yii stat关系多列

Activerecord Yii stat关系多列,activerecord,yii,Activerecord,Yii,如何定义Yii模型关系,从单个查询中检索最大和最小价格 SELECT MAX(`price`) as `maxPrice`, MIN(`price`) as `minPrice` FROM `price` WHERE object_id = :objectId 对象id-外键 我想使用关系来访问最小和最大价格,如$object->minPrice,$object->maxPrice。 我正在寻找stat关系,但这种类型的关系只允许检索单个列。在模型关系函数中,您可以这样做 class MyMo

如何定义Yii模型关系,从单个查询中检索最大和最小价格

SELECT MAX(`price`) as `maxPrice`, MIN(`price`) as `minPrice`
FROM `price` WHERE object_id = :objectId
对象id
-外键

我想使用关系来访问最小和最大价格,如
$object->minPrice
$object->maxPrice

我正在寻找stat关系,但这种类型的关系只允许检索单个列。

在模型关系函数中,您可以这样做

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 relations还支持其他统计表达式,请参见上的文档和上的API参考

请显示相关的table@gvgvgvijayan正如你们所看到的,这个物体有很多价值,实际上你们是对的。Yii docs建议这样做。但是执行
$object->maxPrice
$object->minPrice
将生成两个单独的查询:
从object\u id=:objectId
的价格中选择MAX(价格)和
从object\u id=:objectId
的价格中选择MIN(价格)。我想通过一个查询来实现这一点:
选择MAX(price)作为maxPrice,从price中选择MIN(price)作为minPrice,其中objectId=:objectId
则不能使用stat relation(根据定义,它将只返回标量输出),如果要使用单个查询,可以使用createCommand()或CDbCriteria()