2015-10-28 21 views
1

我有一張名爲user的表,其中有一個名爲sub_teams的列。我已經在那裏存儲值,如Construction,Teamwork,WebsiteCodeigniter - 檢查數組中的值是否存在於數據庫中不起作用

我有一個公告表稱爲公告,我有一個正文欄和sub_teams列。

usersannouncements中的sub_teams列中的所有值的值均以逗號分隔存儲。我想實現的是,如果一條通知中有一行有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(); 

它似乎不工作,因爲它顯示每一個單一的公告。多謝你們。

+0

你想獲取特定用戶的公告?或爲所有用戶? –

+0

打印查詢並嘗試在phpmyadmin中運行。這可能有助於報告問題。 –

回答

0

如果我沒有錯,你正在爲特定用戶提取公告。它返回因爲在第二次查詢的所有行,你已經錯過了whereuserId條件

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

添加WHERE條件在你的第二個查詢。

+0

那麼這行'$ this-> db-> join('users','users.uid = announcements.uid')呢? ' – Saty

+0

@Saty,它會得到所有匹配用戶的結果。 –

+0

這裏OP也使用'uid'。根據你的答案,你建議OP更改'uid'列名 – Saty

相關問題