2015-02-05 29 views
0

CakePHP的模型关联我在CakePHP的以下模型:与用户ID

class Post extends AppModel { 

var $name = 'Post'; 

var $belongsTo = array(    
     "User" => array(
       'className' => 'User', 
       'foreignKey' => 'user', 
       'fields'=>array('id', 'username', 'last_action', 'type', 'status', 'country') 
       ), 
); 
var $hasOne = array(    
      "Follower" => array(
        'className' => 'Follower', 
        'foreignKey' => false, 
        'fields'=>'target', 
        'conditions' => array('Follower.target = Post.user', 'Follower.user = 21') 
      ), 
); 
} 

这个模型从数据库获取的职位,包括基本的用户信息。我的目标是在相同的查询中包含检索数据的用户是否关注创建该帖子的人。

由于这个原因,我试图关联表追随者。但为了得到合适的结果,我应该提交用户标识(在本例中为21)。问题是我不知道如何传递记录的用户ID变量。

有人知道该怎么做或者应该如何写这个模型? 谢谢

+0

描述Follower模型的结构以及它的任何字段如何与另一个模型相关联。我的猜测是这种关系不是Post模型的一部分,而是User模型的一部分。 – AgRizzo 2015-02-05 20:46:12

+0

为什么在条件中硬编码用户ID?这会扭曲所有查询的结果。条件应该是您为结果构建的查询的一部分, – 2015-02-05 21:05:52

+0

追随者表只有2个字段,用户(追随者)和目标(追随者)。如果我在用户中进行关系,我会遇到与用户标识相同的问题。 – Nyoc 2015-02-05 21:28:09

回答

0

删除Post模型中的$ hasOne代码。立即执行你的find之前,用bindModel

例如,这会从(已登录用户的ID改变21到你)Post模型中的一个方法调用之前find

$this->bindModel(
     array('hasOne'=>array(
        'Follower' => array(
        'className' => 'Follower', 
        'foreignKey' => false, 
        'fields'=>'target', 
        'conditions' => array(
         'Follower.target' => 'Post.user', 
         'Follower.user' => '21') 
        ) 
     )) 
     );