Codeigniter - 检查数据库中是否存在数组中的值不起作用

时间:2015-10-28 12:48:00

标签: php mysql codeigniter

我有一个名为user的表,其中有一个名为sub_teams的列。我在那里存储了值Construction,Teamwork,Website等等。

我有一个名为公告的公告表,其中我有一个正文列和一个sub_teams列。

sub_teamsusers中的announcements列中的所有值都以逗号分隔。我想要实现的是,如果某个公告在其中一行中有Construction,Website且用户有Website,Teamwork,那么他就可以查看该公告,因为他在Construction sub_team中。 修改:但我希望显示sub_teams而不只是一个的所有公告行。

我怎样才能做到这一点?我试过这个:

    $uid = $this->session->userdata('uid');
    $this->db->select('sub_teams');
    $this->db->from('users');
    $this->db->where('uid', $uid);
    $sub_teams_query = $this->db->get();
    $sub_teams_result = $sub_teams_query->row();
    $sub_teams = explode(',', $sub_teams_result->sub_teams);

    $this->db->limit($limit, $start);
    $this->db->select('*');
    $this->db->from('announcements');
    $this->db->where('active', 1);
    $this->db->where('date_created <', date('Y-m-d H:m:s')); //hide the announcements that are new and not published yet.

    foreach ($sub_teams as $sub_team) {
        $this->db->or_like('view_sub_teams', $sub_team);
    }


    $this->db->join('users', 'users.uid = announcements.uid');
    $this->db->order_by('date_created', 'desc', 'after');
    $query = $this->db->get();

它似乎不起作用,因为它显示每一个公告。谢谢你们。

1 个答案:

答案 0 :(得分:0)

如果我没错,您正在获取特定用户的通知。它返回所有行,因为在第二个查询中,您错过了where userId条件

$this->db->where('uid', $uid);

在第二个查询中添加where条件。