php - 建模关联模型(DRY、KISS、SKINNY CONTROLLER 和 FAT 模型)

标签 php mysql cakephp dry

我有两个模型:

服务器(属于从属)

从站(有许多服务器)

在 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..
    );
 } 
正如你所看到的,我创建了一个函数来从服务器中提取一个字段,因为如果有一天发生变化,我将只需要在一个地方进行更改..对于我正在考虑的从站也是如此使用函数来拉取每个字段..

所以,问题是:我应该使用每个字段的函数来获取从站的信息还是有其他更好的方法? (我需要几乎整个从属表信息,除了一些字段..)

最佳答案

您可以使用Containable behaviour它将提取必要的信息,而无需像这样的复杂逻辑。使用该行为,您可以发出如下请求:

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

这样你就不会让你的模型产生不必要的脂肪(它们健康吗:))并且你会得到需要的东西。与containable您也可以获得特定字段。

关于php - 建模关联模型(DRY、KISS、SKINNY CONTROLLER 和 FAT 模型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22739416/

相关文章:

php - 将登录问题重定向到我所有的本地主机 WordPress 站点

mysql - 如何获取 MYSQL 中另一个表中的项目数组及其关联值的列表?

php - sql数据字符集/字符集,设置名称不起作用

php - 记录 cakephp 项目

php - 查询HABTM相关Model的join表

php - 使用透明登录过程跨多个站点进行相同登录

php - 具有嵌套/层次关系表的 SQL 查询

php - Codeigniter数据库删除和插入多条记录

php - 将数组元素插入数据库字段MYSQL

authentication - 如何从CakePHP的页面 Controller 中删除身份验证?