【问题标题】:load cakephp model into related controller将 cakephp 模型加载到相关控制器中
【发布时间】:2012-09-22 00:39:11
【问题描述】:

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

【问题讨论】:

    标签: model controller cakephp-2.0


    【解决方案1】:

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

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

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

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

    如果在用户的控制器中

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

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

    【讨论】:

    • 谢谢。我发现在这种情况下我也可以使用 $user['Writer']['id']
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    相关资源
    最近更新 更多