Mysql cakephp中基于条件的外键输入模型

Mysql cakephp中基于条件的外键输入模型,mysql,cakephp,cakephp-2.0,cakephp-2.1,cakephp-2.3,Mysql,Cakephp,Cakephp 2.0,Cakephp 2.1,Cakephp 2.3,我被一个与foreignKey概念相关的问题打动了。 我有两个表用户和用户关系 users user_relations id username id user_id friend_id status 1 abc 1 1 2 Acce

我被一个与
foreignKey
概念相关的问题打动了。 我有两个表
用户
用户关系

     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\u id
外键
,我的
用户关系
模型如下所示

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”
的信息

如果用户
“2”
登录,则他将获得用户
“2”
“3”
的信息。但是在这里我需要获得用户的信息
“1”
&
“3”
。i、 例如,在一种情况下,它需要根据
用户id
而不是
朋友id

如果我可以保持
外键
的状态,我可以根据
用户id
朋友id
获得结果


有什么需要帮忙的吗

我不知道这对你有什么效果

但它会解决你的问题

$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
)

尝试更改您与HABTM的关系,如以下回答所示: