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的关系,如以下回答所示: