将cakephp模型加载到相关控制器中

时间:2012-09-22 00:39:12

标签: model controller cakephp-2.0

我有一个cakephp2项目,我有一个用户和不同的可能角色(管理员,作家,主持人)。每个角色都有自己的模型。当用户登录时,我检查用户是否处于角色中并重定向到角色的控制器。但我似乎无法加载与用户相关的模型。

$user = $this->Auth->user();
if($user['role'] == 'writer'){
  $writer = $this->Writer->findByUser_id($user['id']);
  $writerID = $writer['id'];
  # redirect and such here
}

Cake在第三行说错误

Error: Call to a member function findByUser_id() on a non-object    

我在用户模型中有以下内容

public $hasOne = 'Writer';

这在Writer模型中

public $belongsTo = 'User';

我知道这一定非常简单,但我似乎无法弄清楚如何将Writer模型放入我的控制器中。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果您在控制器中使用该查找,则必须使用链接

$this->User->Writer->findByUserId($id);

如果它在模型中,那么您可以使用链接。你可能注意到的其他事情是“ UserId ,它适用于表格中的 user_id

此外,您可以使用递归或可包含来从Writer和主持人

获取相关结果

如果在用户的控制器中

$this->User->Behaviors->attach('Containable');

$this->User->contain(array('Writer'));
//do ur find

作为最佳实践,请尝试在模型层中保留这些查找。在模型层中,您将跳过链中的模型名称。