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

Model 将cakephp模型加载到相关控制器中,model,controller,cakephp-2.0,Model,Controller,Cakephp 2.0,我有一个cakephp2项目,我有一个用户和不同的角色(管理员、作者、主持人)。每个角色都有自己的模型。当用户登录时,我检查该用户是否处于角色中,并重定向到该角色的控制器。但我似乎无法加载与用户关联的模型 $user = $this->Auth->user(); if($user['role'] == 'writer'){ $writer = $this->Writer->findByUser_id($user['id']); $writerID = $write

我有一个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';
这就是作者模型

public $belongsTo = 'User';

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

如果您使用的是控制器中的“查找”,则必须使用链接

$this->User->Writer->findByUserId($id);
如果它在模型中,那么您可以使用链接。您可能注意到的另一件事是“UserId,它适用于表中的user\u id

此外,您可以使用递归或containable从Writer和慢化剂处获取相关结果

如果在用户控制器中

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

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

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

谢谢。我发现在这种情况下,我还可以使用$user['Writer']['id']