我有两个表:分页与协会的hasMany CakePHP的
选手和投票 参赛者的hasMany投票
我试着做一个计数(Vote.id)的投票,所以我可以将它放在 记录集和分页他们,但我不知道该把它放在哪里。 我在字段数组上做了它,但它给了我总票数 ,无论他们属于哪个参赛者。
的票参赛者记录链接在一起所以我 所做的是对我的看法,我做了计数($选手[投票]),但是这不能成为 分页和我的客户希望能够进行排序参赛者由 投票。
有没有一种方法可以让我做这样的事情对我的看法?:
排序(“投票”,“计数(投)”); ?>
或者我是否必须创建一个查询,对所有选票进行计数 其中Contestant.id = Votes.contestant_id?
控制器参赛者:
function index() {
$page = 'Contestants';
$this->set('page', $page);
$this->paginate =
array(
'order' => 'id ASC',
'contain' => array(
'Vote' => array(
'fields' => array("Vote.contestant_id",'Vote.id')
)
)
$conditions ["Contestant.active"] = 1;
$this->set('contestants', $this->paginate('Contestant',
$条件)); }
奇怪,当我尝试你的建议,这是它建立查询。 查询:SELECT SUM('Vote'.'id')AS Contestant__votes,'Vote'.'group','Vote'.'contestant_id' FROM'votes' AS'Vote' WHERE'Vote'.'contestant_id 'IN(1,2) – 2009-10-21 19:28:15
它显示此错误:模型“投票”不与模型“投票”相关联。这是一个错误?为什么需要将模型与自身相关联? – 2009-10-21 20:03:36
好吧似乎CakePHP的不通过中可容纳的行为支持组,所以我做了这样的事情: '条件'=> “1 = 1 GROUP BY Vote.contestant_id” 并生成该SQL查询: SELECT SUM (Vote'.'id')AS Contestant__votes,'Vote'.'contestant_id' FROM'votes' AS'Vote' WHERE 1 = 1 GROUP BY'Vote'.'contestant_id' AND'Vote'.'contestant_id' IN( 1,2) – 2009-10-21 20:53:48