我目前正试图操纵一个关系太多的数据库。我不会让你觉得很复杂,下面是一个非常简单的例子:
我的桌子(动物):id,类型,标题
我想做的是有两个模型“大”和“小”。“大”模型只照顾‘大’型动物(大象和长颈鹿),“小”模型将照顾‘小’型动物(猫和狗)。
做得到吗?
发布于 2012-02-22 05:13:20
是的,您可以创建名为BigAnimal的模型,然后定义$useTable =‘beforeSave’;然后定义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')));
}
}
https://stackoverflow.com/questions/9388987
复制相似问题