我有一个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模型放入我的控制器中。有什么想法吗?
答案 0 :(得分:2)
如果您在控制器中使用该查找,则必须使用链接
$this->User->Writer->findByUserId($id);
如果它在模型中,那么您可以使用链接。你可能注意到的其他事情是“ UserId ,它适用于表格中的 user_id 。
此外,您可以使用递归或可包含来从Writer和主持人
获取相关结果如果在用户的控制器中
$this->User->Behaviors->attach('Containable');
$this->User->contain(array('Writer'));
//do ur find
作为最佳实践,请尝试在模型层中保留这些查找。在模型层中,您将跳过链中的模型名称。