Where 子句 CodeIgniter 中的 Active Record 问题

Posted

技术标签:

【中文标题】Where 子句 CodeIgniter 中的 Active Record 问题【英文标题】:Active Record Issue in Where clause CodeIgniter 【发布时间】:2017-11-30 11:40:15 【问题描述】:

我在活动记录下面写了这个

$query = $this->db->from('tbl_restaurant as tr, tbl_restaurant_servicearea as trs, tbl_restaurant_cuisines as trc')
                          ->where('tr.id', 'trs.restaurant_id')
                          ->where('tr.id', 'trc.restaurant_id')
                          ->where('trs.servicearea_subujrb', $search_suburb)
                          ->get();

生成以下提供 0 行的查询。

SELECT * FROM `tbl_restaurant` as `tr`, `tbl_restaurant_servicearea` as `trs`, `tbl_restaurant_cuisines` as `trc` WHERE `tr`.`id` = 'trs.restaurant_id' AND `tr`.`id` = 'trc.restaurant_id' AND `trs`.`servicearea_subujrb` = '753010 - Cuttack'

但是查询应该看起来像这样表明我们将获得表中的行。

SELECT * FROM tbl_restaurant as tr, tbl_restaurant_cuisines as trc, tbl_restaurant_servicearea trs WHERE tr.id = trs.restaurant_id and tr.id = trc.restaurant_id and trs.servicearea_suburb = '".$search_suburb."'

我认为问题出在 where 子句中的“ID”中,它在数据库表中是整数。如果我们要删除反勾号,则结果显示正确。

请提供解决方案,以便结果为该查询返回正确的行。

我知道我是否会使用 $this->db->query();那么我会得到解决方案,但我想使用活动记录。

提前致谢

【问题讨论】:

【参考方案1】:

已解决:

$query = $this->db->from('tbl_restaurant as tr, tbl_restaurant_servicearea as trs, tbl_restaurant_cuisines as trc')
                          ->where('tr.id = trs.restaurant_id')
                          ->where('tr.id = trc.restaurant_id')
                          ->where('trs.servicearea_subujrb', $search_suburb)
                          ->get();

【讨论】:

以上是关于Where 子句 CodeIgniter 中的 Active Record 问题的主要内容,如果未能解决你的问题,请参考以下文章

查询中的 WHERE 子句在 CodeIgniter 3 中无法正常工作

Codeigniter Where 子句

使用多个 WHERE 子句更新 Codeigniter 中的批处理

Codeigniter:MySQL Where 子句和引号

CodeIgniter:如何使用 WHERE 子句和 OR 子句

在 Codeigniter 中对 WHERE 子句进行分组