我有两个型号:
服务器(属于奴隶)
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的表信息,除了一些字段..)
答案 0 :(得分:0)
您可以使用Containable behaviour来获取必要的信息,而不需要像这样的复杂逻辑。使用您可以发出请求的行为:
$this->Server->find('first', array('conditions'=>array(...), 'contain'=>array('Slave')));
这样你就不会让你的模特变得不必要的脂肪(健康的是他们:))你会采取所需要的。使用containable,您也可以获得特定字段。