1

你好,知识渊博的部落。这里很新,试图写一个简单的“朋友”查询。我已经搜索了 SO 基础,无法从其他问题/解决方案中得到答案。

我有两个看似标准的表,一个用于 id/firstname/lastname 等的成员资格,另一个用于 id/inviter_id/friend_id/status 的友谊表。我选择(任意)将友谊结构为每个关系一行而不是每个关系两行。(似乎这个问题每两行会更容易/不存在,但感觉它会导致其他问题,如果可能的话,想用一个来解决它。)

我正在尝试为所有与当前用户成为朋友的人返回一个名字/姓氏数组,并且大部分成功,除了我还为每个查找列出了用户本人,因此 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;

我想这是我看不到的优雅技巧。有什么想法吗?提前致谢。

4

2 回答 2

2

尝试添加"members.id != $id"到您的 where 子句。

于 2012-10-19T00:04:34.690 回答
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(); 
于 2012-10-19T07:36:45.003 回答