我對CakePHP相當陌生,並且遇到了一個我似乎無法找到一個好的解決方案的問題。我的應用有以下關聯:CakePHP爲什麼不使用SQL連接
- 會員的hasMany投票
- 卷的hasMany投票
- 投票屬於關聯會員,滾動
我想檢索所有的由成員投的票和與每個投票相關的票卷。以下代碼產生完美結果:
$this->Member->id = $id;
$this->Member->contain(array('Vote' => 'Roll'));
$this->set('member_data', $this->Member->read());
不幸的是,這段代碼的效率也很低。而不是僅僅做這樣的事情SELECT * FROM votes JOIN rolls ON votes.roll_id = rolls.id WHERE votes.member_id = 100
,蛋糕執行以下操作:
SELECT * FROM votes WHERE member_id = 100
SELECT * FROM rolls WHERE roll_id = 1
SELECT * FROM rolls WHERE roll_id = 2
SELECT * FROM rolls WHERE roll_id = 3
SELECT * FROM rolls WHERE roll_id = 4
- 等等 - 一個大問題超過500時,卷配!
如何在使用read()方法時提高效率?
您所指定的模型關係? – 2012-07-20 11:32:43
是的。在三個模型中的每一箇中,我都從上面的項目符號列表中指定了關聯。 – 2012-07-20 11:35:47
即使當Roll和Vote之間的關係改變爲Roll hasOne Vote時,也可能會出現這個問題。 – 2012-07-20 12:14:54