我对与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_id
是foreign_key
,user_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_id
或friend_id
获得结果。
请帮忙..!
答案 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
)