2012-01-16 69 views
0

我正在开发基于CodeIgniter和MySQL的项目。我需要建立CodeIgniter查询的建议。CodeIgniter查询查看朋友所做的所有帖子

我想要什么来实现的:

我有3个表,profileactivityfriends。这些表的结构是:

轮廓

user_id | name 

活动

activity_id | message | user_id | sharewith | createdtime 

朋友

id | user1 | user2 | arefriends 

现在我想根据用户分享的内容,将所有用户的帖子显示给每个人/朋友的墙。我只有两个选项可供分享,或是与大家分享与朋友分享

对于大家我在活动sharewith列存储1user_id2只与朋友份额的份额。

我迄今建立了这个查询:

function load_activity() 
{ 
    $user_id=$this->session->userdata('user_id'); 
    $this->db->select('*'); 
    $this->db->from('activity'); 
    $this->db->order_by("activity_id", "desc"); 
    $this->db->limit(15); 
    $this->db->join('profile', 'profile.user_id = activity.user_id'); 
    $query = $this->db->get(); 
    foreach ($query->result() as $row){ 
     $data[]=$row; 
    } 

    echo json_encode($data);    
} 

我怎么能修改此查询,显示其中任何一个都大家共享的所有活动,与朋友只共享?

在此先感谢。

+0

如果可以,给一些朋友表的样本数据。很难用清晰的结构来分析查询。 – Sakthi 2012-01-17 10:08:58

回答

0

看起来你唯一需要的是一个WHERE子句。 如果用户不是朋友,他们应该只能看到“与所有人共享”活动。

function load_activity() { 
    $user_id=$this->session->userdata('user_id'); 
    $this->db->select('*'); 
    $this->db->from('activity'); 
    $this->db->order_by("activity_id", "desc"); 
    $this->db->limit(15); 
    $this->db->join('profile', 'profile.user_id = activity.user_id'); 
    if(!IS_FRIEND) { 
     $this->db->where('sharewith', 1); 
    } 
    $query = $this->db->get(); 
    foreach ($query->result() as $row){ 
     $data[]=$row; 
    } 

    echo json_encode($data);    
}