最佳实践(胖模型,瘦控制器)

时间:2014-02-27 04:35:47

标签: php cakephp model-view-controller

我对以下事项的最佳做法有疑问:

我有Model Server(属于User)和User Model(hasOne Server)

在ClientsController中,我有来自 Auth 的用户ID ..我在Model Server中有一个方法(getInfo()),它使用$this->find()来获取服务器上的信息。

所以,问题是 ClientsController 下面的最佳实践是什么(伪代码,忽略它):

$intUser = $this->Auth('User.id');
$intServer = $this->Server->getUserOwnerID($intUser); //I get the Server ID respective to that User
$this->set('server_info', $this->Server->getInfo($intServer));

$intUser = $this->Auth('User.id');
$this->set('server_info', $this->Server->getInfo($intUser));

在第一个实践中,getInfo方法的工作量会减少,我可以重用函数

在第二个实践中,getInfo方法可以从该用户ID获取相应的服务器..如果我想在不使用用户ID的情况下重用?

那么,实践是什么?

1 个答案:

答案 0 :(得分:1)

回答您的问题:

选项#2似乎是明智的选择。

在选项#1中,您运行的是两种方法,总共只需要执行一次find()


更好:

或者,您可以将其更改为一行:

$this->set('serverInfo', $this->Server->findByUserId($this->Auth('User.id')));

注1:注意'serverInfo'是camelCase,遵循CakePHP约定

注意2:您可以使用findBy___并添加camelCase字段名称来自动执行查找。 See details on 'findBy'