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 模型放入我的控制器中。有任何想法吗?

4

1 回答 1

2

如果您在控制器中使用该查找,那么您将不得不使用链接

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

如果它在模型中,那么您可以使用链接。您可能已经注意到的另一件事是“ UserId,它适用于表中的user_id

此外,您可以使用递归或可包含从 Writer 和 Moderator 获取相关结果

如果在用户的控制器中

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

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

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

于 2012-09-22T02:08:09.210 回答