0

我卡在好友列表的问题上

我有两张桌子首先

1- 用户表(ID、用户名、密码)

2-好友表(id、myid、friend_id)

现在如果我在用户表中有两个用户 - 第一个用户 id = 50 - 第二个用户 id = 56

同时我在朋友表中有一条记录 ID=1 myid=50 friend_id = 56

我想创建查询,这个查询(如果我登录并且我的 id 是 50)它将只显示 56 用户的用户名,如果我使用用户 id 56 登录,它将显示 50 用户的用户名

我知道会有两个查询,首先会带上我所有的朋友,第二个会告诉我没有身份证的朋友,但我不知道如何帮助

一些如果我的代码

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

1 回答 1

1

我认为你应该在双方建立朋友关系,例如如果用户 50 和用户 56 都是朋友来建立这种关系,你应该在 myfriends 表中插入 2 个条目:

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

于 2014-04-27T08:40:37.330 回答