안녕하세요 더 지식이 넘치는 무리. 아주 새롭고 간단한 '친구'쿼리를 작성하려고합니다. 나는 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