Activerecord Yii stat关系多列
如何定义Yii模型关系,从单个查询中检索最大和最小价格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
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()