Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex CI 3.0.4大,其中查询中的_导致消息:preg_match():编译失败:正则表达式在偏移量处太大)_Regex_Codeigniter - Fatal编程技术网

Regex CI 3.0.4大,其中查询中的_导致消息:preg_match():编译失败:正则表达式在偏移量处太大)

Regex CI 3.0.4大,其中查询中的_导致消息:preg_match():编译失败:正则表达式在偏移量处太大),regex,codeigniter,Regex,Codeigniter,我正在运行一个查询,$sale\u id可能包含100到数千个sale\u id。我正在寻找一种在不修改CI 3核心的情况下修复正则表达式错误的方法 这在版本2中没有发生,在CI 3中也不被认为是一个bug(我以前提出过这个问题) 有什么办法可以让它工作吗?我可以更改应用程序的逻辑,但这需要几天的工作 我正在寻找一种方法来扩展/覆盖一个类,这样我就可以允许这个查询工作。如果没有一种方法可以通过覆盖来做到这一点,我将不得不破解核心(我不知道怎么做)。 $this->db->select

我正在运行一个查询,
$sale\u id
可能包含100到数千个sale\u id。我正在寻找一种在不修改CI 3核心的情况下修复正则表达式错误的方法

这在版本2中没有发生,在CI 3中也不被认为是一个bug(我以前提出过这个问题)

有什么办法可以让它工作吗?我可以更改应用程序的逻辑,但这需要几天的工作

我正在寻找一种方法来扩展/覆盖一个类,这样我就可以允许这个查询工作。如果没有一种方法可以通过覆盖来做到这一点,我将不得不破解核心(我不知道怎么做)。

$this->db->select('sales_payments.*, sales.sale_time');
$this->db->from('sales_payments');
$this->db->join('sales', 'sales.sale_id=sales_payments.sale_id');
$this->db->where_in('sales_payments.sale_id', $sale_ids);
$this->db->order_by('payment_date');
错误是:

Severity: Warning

Message: preg_match(): Compilation failed: regular expression is too large at offset 53249

Filename: database/DB_query_builder.php

Line Number: 2354

Backtrace:

File: /Applications/MAMP/htdocs/phppos/PHP-Point-Of-Sale/application/models/Sale.php
Line: 123
Function: get

File: /Applications/MAMP/htdocs/phppos/PHP-Point-Of-Sale/application/models/Sale.php
Line: 48
Function: _get_all_sale_payments

File: /Applications/MAMP/htdocs/phppos/PHP-Point-Of-Sale/application/models/reports/Summary_payments.php
Line: 60
Function: get_payment_data

File: /Applications/MAMP/htdocs/phppos/PHP-Point-Of-Sale/application/controllers/Reports.php
Line: 1887
Function: getData

File: /Applications/MAMP/htdocs/phppos/PHP-Point-Of-Sale/index.php
Line: 323
Function: require_once

没有一个好的方法来修改内核,所以我对代码做了一个小的修改,使用了大的where_in。创建一个小组,并在较小的块中创建where_in

$this->db->group_start();
$sale_ids_chunk = array_chunk($sale_ids,25);
foreach($sale_ids_chunk as $sale_ids)
{
    $this->db->or_where_in('sales_payments.sale_id', $sale_ids);
}
$this->db->group_end();

天才!!这正是我要找的!先生,你真是个天才。非常感谢。非常感谢。干得好工作得很有魅力。这很有帮助。我认为
Codeigniter
的这个函数
group\u start()
对于开发人员来说不太了解。非常感谢你。