2015-10-21 74 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 –