Codeigniter – 具有多个条件的批次更新

对于初学者,update_batch上的Codeigniter文档不存在. kenjis很善于提供一些文档并将其提交到存储库.希望他们很快拉.

有谁知道如何添加多个条件的Codeigniters update_batch命令?

我的期望用途:

$where = array(
    'title',
    'name'
); 

$this->db->update_batch('mytable', $data, $where);

当我尝试这个代码,我得到了以下错误:

A Database Error Occurred
One or more rows submitted for batch updating is missing the specified index.

Filename: C:\wamp\www\wheel\system\database\DB_active_rec.php

Line Number: 1451

更新kenjis的批量文件:

$this->db->update_batch();

根据您提供的数据生成更新字符串,并运行查询.您可以将数组或对象传递给函数.以下是使用数组的示例:

$data = array(
    array(
        'title' => 'My title' ,
        'name' => 'My Name 2' ,
        'date' => 'My date 2'
    ),
    array(
        'title' => 'Another title' ,
        'name' => 'Another Name 2' ,
        'date' => 'Another date 2'
    )
);

$this->db->update_batch('mytable', $data, 'title');
// Produces: 
// UPDATE `mytable` SET `name` = CASE
// WHEN `title` = 'My title' THEN 'My Name 2'
// WHEN `title` = 'Another title' THEN 'Another Name 2'
// ELSE `name` END,
// `date` = CASE 
// WHEN `title` = 'My title' THEN 'My date 2'
// WHEN `title` = 'Another title' THEN 'Another date 2'
// ELSE `date` END
// WHERE `title` IN ('My title','Another title')

第一个参数将包含表名,第二个参数是值的关联数组,第三个参数是其中的关键字.

资料来源:

kenjis的文档更新:
https://bitbucket.org/kenjis/ci-user-guide/changeset/3d579dd14afe
> saintnicster的拉动要求:https://github.com/EllisLab/CodeIgniter/pull/448

最佳答案
您不能将多个where子句添加到update_batch().它只接受一个字符串作为where子句的第三个参数,所以我确定没有办法做这个方法当前写的方式.

source

/**
 * Update_Batch
 *
 * Compiles an update string and runs the query
 *
 * @param   string  the table to retrieve the results from
 * @param   array   an associative array of update values
 * @param   string  the where key
 * @return  object
 */
public function update_batch($table = '', $set = NULL, $index = NULL)

转载注明原文:Codeigniter – 具有多个条件的批次更新 - 代码日志