基于cakephp条件的外键模型

时间:2014-02-17 11:44:00

标签: mysql cakephp cakephp-2.0 cakephp-2.1 cakephp-2.3

我对与foreignKey概念相关的一个问题感到震惊。 我有两张桌子users& user_relations

     users                                    user_relations

  id   username                           id   user_id   friend_id   status
  1     abc                                1       1         2      Accepted
  2     def                                2       2         3      Accepted
  3     ghi                                3       1         3      Accepted

此处friend_idforeign_keyuser_relations模型看起来像

public $belongsTo = array(
    'Friend' => array(
        'className' => 'User',
        'foreignKey' => 'friend_id'
    )
  );

我的条件就像

'conditions' => array(
    "OR" => array(
        'UserRelation.user_id' => $iLoggedUserId,
        'UserRelation.friend_id' => $iLoggedUserId,
    ),
    'ViewerRelationship.status' => 'Accepted'
 )

现在,当用户"1"登录后,他将获得用户"2"&的信息。 "3"基于foreignKey friend_id

如果用户"2"已登录,则他会收到用户"2"&的信息。 "3"。但在这里,我需要获取用户"1"&的信息。 "3"。即,在一种情况下,它需要根据user_id而非friend_id

获取信息

如果我能保持foreignKey状态,我可以根据user_idfriend_id获得结果。

请帮忙..!

1 个答案:

答案 0 :(得分:0)

我不知道它对你有什么用。

但它会解决你的问题。

$respone = $this->UserRelation->find('all', 
 array('conditions'=> array(
    'OR'=>array(
        'UserRelation.user_id' => $iLoggedUserId,
        'UserRelation.friend_id' => $iLoggedUserId
       )
    ), 
'fields' => array('UserRelation.*')
));
$reqFriendsId = array();
foreach($respone as $key => $val){
    if($val['UserRelation']['friend_id'] == $iLoggedUserId){
     array_push($reqFriendsId, $val['UserRelation']['user_id']);
    }else{
   array_push($reqFriendsId, $val['UserRelation']['friend_id']);
   }

}

//登录用户1

Array
(
[0] => 2
[1] => 3
)

//登录用户2

Array
(
[0] => 1
[1] => 3
)