我对以下事项的最佳做法有疑问:
我有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的情况下重用?
那么,实践是什么?
答案 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'