你好更知識的部落。這裏很新,試圖寫一個簡單的「朋友」查詢。我搜索了SO基地,無法從其他問題/解決方案中得出答案。需要幫助調整codeigniter朋友查詢
我有兩個看似標準的表,一個用於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;
我想這是一些優雅的手腕,我只是看不到。有什麼想法嗎?提前致謝。
不熟悉笨,但我的猜測是你得到的用戶theirself因爲你允許查詢兩種方式工作(即當用戶的好友並且當用戶是邀請者時)。嘗試刪除「OR friendship.id_friend = members.id」。如果這樣的作品,你也可以擺脫where1,只需將where2重命名爲where1。 – JohnLBevan