2012-09-22 51 views
0

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

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

蛋糕给第三行说

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

我已在User模型

public $hasOne = 'Writer'; 

以下的错误,这在作家模型

public $belongsTo = 'User'; 

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

回答

2

如果您使用的是控制器找到,那么你将不得不使用链接

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

如果是在模型中,那么你是罚款的链接。你可能已经注意到另一件事是“用户ID它适用于表中的user_id说明

此外,还可以使用递归或中容纳摆脱作家和主持人

如果相关结果在用户控制器

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

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

最佳做法是尽量保持这些发现在模型层的。在模型层,你会跳过从链模型的名称。

+0

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