Во-первых, документации Codeigniter по update_batch не существует. kenjis был достаточно любезен, чтобы предоставить некоторую документацию и отправить ее в репозиторий. Надеюсь, скоро потянут.
Кто-нибудь знает, как добавить несколько условий where в команду 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')
Первый параметр будет содержать имя таблицы, второй — ассоциативный массив значений, третий параметр — ключ where.
Источники:
- обновление документации Кенджиса: https://bitbucket.org/kenjis/ci-user-guide/changeset/3d579dd14afe< /а>
- запрос на вытягивание от Saintnicster: https://github.com/EllisLab/CodeIgniter/pull/448