我被困在朋友列表的问题上
我有两张桌子第一张
1-用户表(ID、用户名、密码)
2-好友表(id,myid,friend_id)
现在,如果用户表中有两个用户-第一个用户id=50-第二用户id=56
同时我在朋友表中有一个记录ID=1 myid=50 friend_ID=56
我想创建查询,这个查询(如果我登录并且我的id是50)将只显示56用户的用户名,并且如果我使用用户id 56登录,它将显示50用户的用户名
我知道会有两个问题,第一个是给我所有的朋友带上我的id,第二个是给没有我id的朋友看,但我不知道如何帮助
如果我的代码
function get_myfriends(){
$this->db->where('myid',$this->session->userdata('userid'));
$this->db->or_where('fid',$this->session->userdata('userid'));
$query = $this->db->get('myfriends');
return $query->result();
}
function get_user_by_id($id){
$this->db->where('userid',$id);
$query = $this->db->get('users');
foreach ($query->result() as $row){
// Here is the problem
if($row->myid == $this->session->userdata('userid'))
}else{
}
return $query->result();
}
我认为你应该在双方建立朋友关系,例如,如果用户50和用户56都是建立这种关系的朋友,你应该在myfriends表中插入两个条目:
+------+-----+
| myid | fid |
+------+-----+
| 50 | 56 |
| 56 | 50 |
+------+-----+
然后,要获得任何用户的所有朋友,您只需执行以下操作:
$sqlQuery = 'SELECT * FROM myfriends
JOIN users
ON myfriends.fid = users.userid
WHERE myfriends.myid = ?';
return $this->db->query($sqlQuery, $id)->result();
更新
如果您只希望它有一个边关系,您可以尝试此查询:
$sqlQuery = 'SELECT * FROM myfriends
JOIN users
ON (myfriends.fid = users.userid OR myfriends.myid = users.userid) AND user.userid <> ?';
return $this->db->query($sqlQuery, $id)->result();