我有两个模型,一个是拍卖,另一个是出价。
拍卖有很多出价。它们与 Bid
中的外键auction_id相关联现在,我想找到每次竞价的出价价格的最大值。
$dataProvider = new CActiveDataProvider('Auction', array('criteria' => array(
'with' => array(
'bids' => array(
'alias'=>'b',
'group' => 'auction_id',
'select' => 'max(b.price) as maxprice'
)
)
)
)
);
我在Auction的模型类中定义了一个 maxprice 属性。
但是,如果我尝试检索 maxprice 属性,则返回 NULL 。
更具体地说,我将 $ dataprovider 渲染到视图页面,它无法获得 maxprice 属性。
PS:
我在mysql中执行了查询,查询结果证明是正确的。
所以,Yii代码肯定有问题
SQL代码:
SELECT `t`.`id` , max(b.price) as maxprice
FROM `auction` `t`
LEFT OUTER JOIN `bid` `b` ON (`b`.`auction_id`=`t`.`id`) GROUP BY auction_id
答案 0 :(得分:1)
在关系之前输入您想要的值,如下所示:
$dataProvider = new CActiveDataProvider('Auction', array('criteria' => array(
'select' => 't.*, max(b.price) as maxprice',
'with' => array(
'bids' => array(
'alias'=>'b',
'group' => 'auction_id',
'together'=>true,
)
如果您愿意,可以将“t。*”替换为特定的字段名称。
或者您只需在拍卖模型上使用选择,加入和分组属性,并完全跳过关系。