我想要一个 CodeIgniter 从具有三个条件的表中选择查询。
wrk_fld_exc = 140
wrk_cs_sts = 'Open'
wrk_dlvrd_sts = 'Delivered' OR wrk_cl_sts = 'Success'
第三个条件是 AND 条件包含 OR 条件。 第一个和第二个是 AND 条件。
你可以这样编码:
$this->db->where('wrk_fld_exc',140);
$this->db->where('wrk_cs_sts','open');
$where = '(wrk_dlvrd_sts="open" or wrk_cl_sts = "Success")';
$this->db->where($where);
codeigniter 在查询中使用自己的 OR 子句语法
$this->db->or_where('wrk_cl_sts','Success');
要在 where 子句中使用 AND,请使用
$this->db->where('');
两次
像这样
$this->db->where('wrk_fld_exc',140);
$this->db->where('wrk_cs_sts','open');
$this->db->where('wrk_dlvrd_sts ','Delivered');
$this->db->or_where('wrk_cl_sts','Success');
我想添加一些信息
Codeigniter 3.1.11
:
Query grouping
中有一个
Query Builder Class
所以本的回答会是这样的:
public function some_function()
{
$this->db->where("wrk_fld_exc",140);
$this->db->where("wrk_cs_sts","Open");
$this->db->group_start();
$this->db->where("wrk_dlvrd_sts","Delivered");
$this->db->or_where("wrk_cl_sts","Success");
$this->db->group_end();
return $this->db->get("some_table");
}
检查后:
echo $this->db->last_query();
它将产生 SQL:
SELECT * FROM `some_table` WHERE `wrk_fld_exc` = 140 AND `wrk_cs_sts` = 'Open' AND ( `wrk_dlvrd_sts` = 'Delivered' OR `wrk_cl_sts` = 'Success' )
进一步阅读: Codeigniter 手册
$this->db->where('wrk_fld_exc',140);
$this->db->where('wrk_cs_sts','open');
$where = '(wrk_dlvrd_sts="open" or wrk_cl_sts = "Success")';
$this->db->where($where);
您必须使用
group_start()
和 group_end()
封装 OR 条件的子集。 or_where()
和 get_where()
是在这种情况下最简洁的方法,它们都高兴地收到一组关联的条件。
return $this->db
->start_group()
->or_where([
'wrk_dlvrd_sts' => 'Delivered',
'wrk_cl_sts' => 'Success',
])
->group_end()
->get_where(
'wrk_table',
['wrk_fld_exc' => 140, 'wrk_cs_sts' => 'Open']
)
->result();
渲染的 SQL 将类似(间距和引用可能会有所不同)
SELECT *
FROM wrk_table
WHERE (
`wrk_dlvrd_sts` = 'Delivered'
OR `wrk_cl_sts` = 'Success'
)
AND `wrk_fld_exc` = 140
AND `wrk_cs_sts` = 'Open'
$this->db->select("*");
$this->db->from("table_name");
if($condition1 != ''){
$this->db->where('wrk_fld_exc', 140);
}
if($condition2 != ''){
$this->db->where('wrk_cs_sts ', open);
}
//You can limit the results
$this->db->limit(5);
$q = $this->db->get();
return $q->result();
这是您可以在 codeigniter 中以这种方式实现的查询的基本结构。如果需要,您可以添加条件。