Activerecord [Yii][SQL]在连接表以获取报价计数时不获取记录

Activerecord [Yii][SQL]在连接表以获取报价计数时不获取记录,activerecord,yii,Activerecord,Yii,我有以下代码可以按报价(出价和购买)排序: 我正在使用分页和排序: $item_count = Auction::model()->count($clean_criteria); $pages = new CPagination($item_count); $pages->setPageSize(5); $pages->applyLimit($clean_criteria); $sort = new CSort('Auction'); $sort->attribute

我有以下代码可以按报价(出价和购买)排序:

我正在使用分页和排序:

$item_count = Auction::model()->count($clean_criteria);
$pages = new CPagination($item_count);
$pages->setPageSize(5);
$pages->applyLimit($clean_criteria); 

$sort = new CSort('Auction');
$sort->attributes = array('offers'=>array('asc'=>'offers', 'desc'=>'offers DESC'));
$sort->applyOrder($clean_criteria);
但要获得优惠,我必须在寻找拍卖时使用
$crtieria

$auctions = Auction::model()->findAll($criteria);
$auctions = Auction::model()->findAll($criteria);
在网站上有正确的页面计数,但在每个网站上都有一个相同的拍卖。问题是查询只返回一条记录,但如何解决这个问题

另外,也许我使用了错误的加入类型,没有报价的拍卖不会被退回

编辑:

此代码工作正常:

$criteria->select = "*, COUNT(abid.id) AS offers1";
$criteria->join = ' LEFT JOIN auction_bid abid ON (t.id = abid.auction)';
$criteria->group = 't.id';
对于第一次拍卖,它返回
offers1=1

以下也是:

$criteria->select = "*, COUNT(abuy.id) AS offers2";
$criteria->join = ' LEFT JOIN auction_buy abuy ON (t.id = abuy.auction)';
$criteria->group = 't.id';
它返回第一次拍卖的
offers2=4

但当我将其合并到一个查询中时:

$criteria->select = "*, COUNT(abid.id) AS offers1, COUNT(abuy.id) AS offers2";
$criteria->join = ' LEFT JOIN auction_bid abid ON (t.id = abid.auction)';
$criteria->join .= ' LEFT JOIN auction_buy abuy ON (t.id = abuy.auction)';
$criteria->group = 't.id';
对于第一次拍卖,它返回
offers1=4和offers2=4


如何修复它

已解决:

标准:

$criteria->select = "*, (COUNT(DISTINCT abid.id) + COUNT(DISTINCT abuy.quantity)) AS `offers`";
$criteria->join = ' LEFT JOIN auction_bid abid ON (t.id = abid.auction)';
$criteria->join .= ' LEFT JOIN auction_buy abuy ON (t.id = abuy.auction)';
$criteria->group = 't.id';
分类:

$sort = new CSort('Auction');
$sort->attributes = array('offers');
$sort->applyOrder($criteria);
分页:

$item_count = Auction::model()->count($clean_criteria);
$pages = new CPagination($item_count);
$pages->applyLimit($criteria);  
搜索:

$auctions = Auction::model()->findAll($criteria);