从其他表中获取我的好友列表



我被困在朋友列表的问题上

我有两张桌子第一张

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();

相关内容

  • 没有找到相关文章

最新更新