CodeIgniter上的活动记录更新批次有问题。
在文件上,
$this->db->update_batch('mytable', $data, 'title');
其中"title"是更新过程的索引。是否可以对此活动记录有两个或多个索引?我已经试过了
$this->db->update_batch('mytable', $data, 'title, title_2');
$this->db->update_batch('mytable', $data, array('title', 'title_2');
它不起作用。
您可以在update_batch
:之前提供额外的where
$this->db->where( "title2", "some_title" );
$this->db->update_batch( "mytable", $data, 'title' );
这将为update_batch
查询提供额外的WHERE
:
WHERE title2 = 'some_title' AND title IN ( '...', '...', '...' );
但是,update_batch
将在每次更新时在内部重置WHERE
子句。因此,作为一种变通方法,您可以提前对其进行分组,以确保在每次迭代中都应用WHERE
:
$chunks = array_chunk( $data, 100 );
foreach( $chunks as $chunk )
{
$this->db->reset_query(); // To ensure there's no conflict/cache
$this->db->where( "title2", "some_title" );
$this->db->update_batch( "mytable", $data, 'title' );
}