【问题标题】:Many models on single table in cakephpcakephp中单表上的许多模型
【发布时间】:2012-02-22 13:13:20
【问题描述】:

我目前正在尝试操作太多的数据库 关系。我不会让你复杂的,所以这里是一个非常 简化示例:

我的桌子(动物): ID,类型,标题

  • 1,大,大象
  • 2,大,长颈鹿
  • 3、小、猫
  • 4、小、狗

我想做的是有两个模型“大”和“小”。 “大”模型只会照顾“大”类型的动物(大象 和长颈鹿), “小”模型将照顾“小”类型的动物(猫和 狗)。

有可能吗?

【问题讨论】:

    标签: cakephp model


    【解决方案1】:

    是的,您可以创建名为 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')));
       }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多