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()
对于开发人员来说不太了解。非常感谢你。