3
我目前正在試圖用太多的方式操縱數據庫 的關係。我不會讓複雜的你,所以這裏是一個非常 簡化的例子:cakephp中單桌上的許多模型
我的表(動物): ID,類型,標題
- 1,大,大象
- 2,大,長頸鹿
- 3,體積小,貓
- 4,小,狗
我想做的事是有2米odels「大」和「小」。 「大」模型只會照顧「大」(大象 和長頸鹿), 和「小」模型將照顧動物類型'小'(貓和 狗)。
有可能嗎?
我目前正在試圖用太多的方式操縱數據庫 的關係。我不會讓複雜的你,所以這裏是一個非常 簡化的例子:cakephp中單桌上的許多模型
我的表(動物): ID,類型,標題
我想做的事是有2米odels「大」和「小」。 「大」模型只會照顧「大」(大象 和長頸鹿), 和「小」模型將照顧動物類型'小'(貓和 狗)。
有可能嗎?
是的,您可以創建名爲BigAnimal的模型,然後定義$ useTable ='animals';然後定義beforeFind和beforeSave,每次將類型設置爲「大」。然後你可以爲SmallAnimal模型做同樣的事情。這裏是一個例子
class BigAnimal extends AppModel {
var $useTable = 'animals';
function beforeFind($queryData) {
// set type to big here
}
function beforeSave() {
// set type to big here
}
}
雖然這是你可以做到這一點,但看起來最好保持1對1模型到表。然後你可以添加必要的功能來查詢所有來自同一模型的大小動物。它使代碼更清潔一點。所以像這樣:
class Animal extends AppModel {
function findBigAnimals() {
return $this->find('all', array('conditions' => array('type' => 'big')));
}
function findSmallAnimals() {
return $this->find('all', array('conditions' => array('type' => 'small')));
}
}