2012-10-18 3 views
1

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

나는 그것을 볼 수없는 우아한 기교가 있다고 상상해보십시오. 이견있는 사람? 미리 감사드립니다.

+3

익숙하지 않은,하지만 당신은 쿼리 (두 가지 일을 할 수 있기 때문에 내 생각 엔 당신이 사용자에게 theirself을 얻고있는 것 즉, 사용자는 친구가있을 때 사용자가 초청자 일 때). "OR friendship.id_friend = members.id"를 제거하십시오. 그게 효과가 있다면 where1을 제거하고 where2를 where1로 바꿀 수 있습니다. – JohnLBevan

답변

2

"members.id != $id"을 where 절에 추가하십시오.

+0

완벽한, thx man. 돌이켜 보면 너무 분명해 보이지만 그러한 것은 천재 다. :) – user1757867

+0

@ user1757867 문제는 없습니다. 다행 : –

0

보십시오이 하나 CodeIgniter를 가진

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

이것에 시간을내어 주셔서 감사합니다. 그러나 위의 해결책은 트릭을 만들었고, 나는이 문제에 곤란을 겪고 있습니다. thx는 생각한 것입니다. – user1757867

관련 문제