2015-10-21 111 views
0

我目前正在建立一個小遊戲來學習我自己一些活躍的記錄(codeigniter)和php的過程。所以我對這一切都很陌生。Codeigniter,活躍記錄,加入

當然,我在路上遇到以下挑戰。

挑戰是,我有兩張桌子,User_Heroes英雄。 表英雄包含用戶在玩遊戲(屬於他的派系)期間可以選擇的所有英雄,並且User_Heroes是用戶已經招募到他的服務中的英雄表格。

我想要做的事情如下,我想做一個查詢,返回當前用戶沒有僱用的英雄列表。

爲了簡單地把他們都弄到我會做這個

public function get_faction_heroes($sUser, $hero_faction){ 
     $oQuery = $this -> db 
         -> select(' id, 
            hero_name, 
            hero_faction, 
            hero_type, 
            hero_cost, 
            hero_maintenance, 
            hero_allowed') 
         -> like('hero_faction',$hero_faction) 
         -> get('heroes') 
         -> result(); 

     return $oQuery; 
    } 

目前,我有以下查詢建立,但很明顯這是錯誤的,因爲它,我希望它返回不返回列表。你可能會注意到,一些英雄被允許多次被招募(hero_allowed> 1)。

也許是爲了進一步清理我已經添加了兩個圖像與當前表

enter image description here

enter image description here

+0

我想你應該已經使用權加入(不左) –

+0

試過,可悲的是它不是溶劑: –

+0

使用$ this-> db-> last_query();在獲得最後一個查詢後,您必須在phpmyadmin或類似的mysql應用程序中使用查詢來獲取des問題。實際上你的問題並沒有被解釋爲與查詢相關的代碼標記。 – siddhesh

回答

1
$this->db->select('*')->from('Heroes'); 
$this->db->where('`id` NOT IN (SELECT `hero_id` FROM `User_Heroes`)', NULL, FALSE); 
$query=$this->db->get(); 
return $query->result(); 
+0

哦,最最最讓我想的是,我現在唯一需要檢查的東西是否如果列表中的英雄被允許多次。 –

+0

然後,你只需在'where'條件後面添加1行'$ this-> db-> where'('Heros.is_allowed>','1')' –

+0

我是gonne改變它的工作方式,因爲英雄是英雄,只有一個英雄,一個僕人只是一個咕嚕咕嚕,你可以有更多的不只是5或6等。 但是,無論如何感謝您的洞察力:D –