你好知识渊博的部落。这里很新,试着写一个简单的'朋友'查询。我搜索了SO基础,无法从其他问题/解决方案中找到答案。
我有两个看似标准的表,一个用于id / firstname / lastname等的成员资格,另一个是id / inviter_id / friend_id / status的友谊表。我已经(任意)选择将友谊结构化为每个关系一行,而不是每个关系两行。 (似乎这个问题会更容易/不存在,每行有两行,但感觉它会导致其他问题,并希望尽可能用一个解决它。)
我正在尝试为所有与当前用户成为朋友的人返回firstname / lastname数组,并且我大部分都取得了成功,除了我也为每个查找列出了用户自己,所以8行包括4个当前用户例如这是我的codeigniter查询:
$id = $this->session->userdata('id');
$this->db->select('first_name, last_name')->from("members");
$this->db->join('friendship', 'friendship.id_inviter = members.id OR friendship.id_friend = members.id');
$where1 = "friendship.status = 'accepted' AND friendship.id_friend = $id";
$where2 = "friendship.status = 'accepted' AND friendship.id_inviter = $id";
$this->db->where($where1);
$this->db->or_where($where2);
$query = $this->db->get();
return $query;
我想这是一些我看不到的优雅技巧。有什么想法吗?提前谢谢。
答案 0 :(得分:2)
尝试将"members.id != $id"
添加到您的where子句中。
答案 1 :(得分:0)
试试这个:
$this->db->select('members.first_name, members.last_name')->from("friendship");
$this->db->join('members', 'members.id = friendship.friend_id');
$this->db->where('friendship.inviter_id',$id);
$this->db->get();