【发布时间】:2021-03-25 13:53:38
【问题描述】:
$dataSet = Array (
[0] => Array ( [quantity] => 22 [sr_no] => 71 [batch_id] =>5 [inq_id] => 91 )
[1] => Array ( [quantity] => 35 [sr_no] => 72 [batch_id] => [inq_id] => 92 )
[2] => Array ( [quantity] => 20 [sr_no] => 69 [batch_id] => [inq_id] => 90 )
[3] => Array ( [quantity] => 45 [sr_no] => 75 [batch_id] => 6 [inq_id] => 94 )
[4] => Array ( [quantity] => 15 [sr_no] => 70 [batch_id] => 6 [inq_id] => 90 )
)
我有上面的数组,我需要从中获取每个 sr_no、batch_id 并需要检查表中是否存在组合(例如第一行 sr_no => 71 & batch_id => 5)( part_list ) .我已经尝试了下面的代码,但它正在获取所有内容。如果有更好的方法也准备实施。
$keyedExistingPartRows = array_column(
$this->db
->where_in('batch_id', array_column($dataSet, 'batch_id'))
->where_in('sr_no', array_column($dataSet, 'sr_no'))
->get('part_list')
->result_array(),
null,
'sr_no'
);
提前致谢。
【问题讨论】:
-
两个单独的 where_in 与列值的完整数组,在这里开始毫无意义 - 这根本不检查您正在寻找的“组合”。你最终需要的 WHERE 子句类似于
WHERE (sr_no = 71 AND batch_id = 5) OR (sr_no = 75 AND batch_id = 6) OR … -
@CBroe 感谢您的回复。你能解释一下如何实现它吗?
-
您还必须考虑没有批次 ID 的条目。这是您想要寻找的合法组合吗?
-
在这些情况下,批处理 id 是否是数据库中的空字符串,而不是
null? -
我无法测试它,因为我没有设置 Codeigniter 项目,而且我不喜欢用我没有测试过的代码发布答案。试着写它,它是一个简单的foreach。循环您的数组,在循环内放置一个
$this->db->or_where调用,并将其余部分(get和result_array)放在循环外。
标签: php mysql codeigniter