1

こんにちは、より知識のある大群。ここでは非常に新しく、単純な「友達」クエリを作成しようとしています。私はSOベースを検索しましたが、他の質問/解決策から答えを推測できませんでした.

私は 2 つの一見標準的なテーブルを持っています。1 つは id/firstname/lastname などのメンバーシップ用で、もう 1 つは id/inviter_id/friend_id/status のフレンドシップ テーブルです。私は(恣意的に)関係ごとに2行ではなく、関係ごとに1行として友情を構築することを選択しました. (この問題は、1行あたり2行の方が簡単/存在しないように見えますが、他の問題を引き起こす可能性があり、可能であれば1行で解決したいと考えています。)

私は現在のユーザーと友達であるすべての人の名/姓の配列を返そうとしていますが、検索ごとにユーザー自身もリストされていることを除いてほとんど成功しているため、8行には現在のユーザーの4つが含まれています.ここに私のコードイグナイタークエリがあります:

$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 に答える