建模相关模型(DRY,KISS,SKINNY CONTROLLER和FAT MODELS)

时间:2014-03-30 02:03:53

标签: php mysql cakephp dry

我有两个型号:

服务器(属于奴隶)

Slave(hasMany Servers)

在Controller中我需要获取一个包含服务器/从服务器信息的数组(以及一些其他信息,例如可以在Controller中的业务逻辑)。我想在服务器模型中创建一个函数构建数组,我需要Slave的每个字段只需要调用这样的函数:

Model Server:

// I created this function for code easier to maintain
function getSlaveId($server_id){
    $this->id = $server_id;
    return $this->field('slave_id');
}

// Return the array that I need, with informations from Server and Slave
function getArrayByServerId($server_id){ 
    $slave_id = $this->getSlaveId($server_id);
    return array(
        'slave_name' => $this->Slave->getName($slave_id)
        // some other information that some did not even pull from some table..
    );
 } 

正如你所看到的,我创建了一个从服务器中提取字段的函数,因为如果有一天发生变化,我只需要在一个地方进行更改......对于那些I&#39的奴隶来说也是如此。 ;我想用一个函数来拉动每个字段..

所以,问题是:我应该为每个字段获取Slave的信息,还是有另一种更好的方法? (我需要几乎整个Slave的表信息,除了一些字段..)

1 个答案:

答案 0 :(得分:0)

您可以使用Containable behaviour来获取必要的信息,而不需要像这样的复杂逻辑。使用您可以发出请求的行为:

$this->Server->find('first', array('conditions'=>array(...), 'contain'=>array('Slave')));

这样你就不会让你的模特变得不必要的脂肪(健康的是他们:))你会采取所需要的。使用containable,您也可以获得特定字段。