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')));
}
}