0

我的大脑已经走到了死胡同 oO 在 DB 中,我有两个表:

store_module->caffe_id,module_id,位置,顺序

模块-> id_module、名称、描述、图像

我有查询我将所有模块用于设置 ID(store_module 表),并且我需要获取出现在此查询中的所有模块(module_id)。我需要做什么?这是代码(我醒了 30 多个小时,我的大脑拒绝与我交流,截止日期快到了,这是我需要做的最后一件事。所以,请帮助 :D):

function mar_get_modules($id){
            $q = $this->db->get_where('store_module', array('caffe_id' => $id));
            $modules = $q->result_array();
}
4

2 回答 2

2

从简单的开始,使用常规查询(如果我猜对了,你需要一个 JOIN )。
此查询应该有效:

$sql = "SELECT m.*,sm.* FROM module m
       LEFT JOIN store_module sm ON sm.id_module = m.module_id
       WHERE sm.caffe_id = ?";
return $this->db->query($sql, array($id))->result_array();

现在,您可以将其转换为 AR 查询:

$query = $this->db->select('module.*,store_module.*')
                  ->from('module')
                  ->join('store_module', 'store_module.id_module = module.module_id','left')
                  ->where('store_module.caffe_id',$id)
                  ->get();
return $query->result_array();

虽然 AR 有时更快,但我通常更喜欢“手动”编写查询,利用绑定来防止 SQL 注入;如果您有一个完全在您眼中的查询,则更容易看到事情是如何工作的

于 2012-08-20T20:06:19.190 回答
0

萨沙,

在上面的函数中,您没有返回任何内容。您需要更新第 3 行的内容以达到以下效果return $q->result_array();

于 2012-08-20T19:55:22.423 回答