更新
好吧,我錯過了一句話:「如果」在您的文章,並認爲你需要的條目只有當用戶投贊成票。閱讀下面的更新以獲取正確的代碼我留給你第一部分以防萬一你將來需要它。 INNER JOIN將只在參賽作品至少有1票時參賽。
------------------第一部分(錯誤)--------------------
聲明的關係你Entries
模型內部:
public function relations() {
return array(
'votes' => array(self::HAS_MANY, 'Votings', 'entry_id'),
);
}
當你創建你的數據提供者做這樣的:
$dataProvider = new CActiveDataProvider('Entries',
array(
'criteria' => array(
'with' => array(
'votes'=>array(
'joinType' => 'INNER JOIN'
)
)
)
)
);
這不會創建你上面寫的SQL,但這樣做會以正確的方式進行。 的SQL將類似於此:
select * from tbl_entries t INNER JOIN tbl_votings v ON t.id = v.entry_id
-----------------第二部分(右)----------- -------
更新
好了,如果你只是需要得到的條目和選票爲他們做你從第一部分相同的關係聲明:
public function relations() {
return array(
'votes' => array(self::HAS_MANY, 'Votings', 'entry_id'),
);
}
與您共創這樣的數據提供者:
$dataProvider = new CActiveDataProvider('Entries',
array(
'criteria' => array(
'with' => array('votes')
)
)
);
我用您的解決方案。 $ dataProvider = Entries :: model() - > with('votes') - > findAll();放在CListView中,但它給出錯誤「致命錯誤:調用一個非對象的成員函數getData()in ...」 – 2012-04-07 07:19:16