我目前正试图以太多的方式操纵数据库 关系。我不会让它变得复杂,所以这里是非常的 简化示例:
我的桌子(动物): id,type,title
我想要做的是有两个型号“大”和“小”。 “大”模型只会照顾类型为“大”的动物(大象 和长颈鹿), 和“小”模型将照顾类型'小'的动物(猫和猫) 狗)。
有可能吗?
答案 0 :(得分:6)
是的,您可以创建名为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')));
}
}