Я только что обнаружил это о Codeigniter, что построитель запросов Active Record автоматически добавляет одинарные кавычки вокруг значения, и что тип MySQL BIT не будет принимать одинарные кавычки вокруг значения.
Чтобы увидеть, что является фактически сгенерированным запросом, добавьте эту строку сразу после вашего запроса: echo $this->db->queries[0];
Вы также можете var_dump( $this->db );
Теперь вы увидите проблемус запросом, но это проблема, которая, я думаю, существует только потому, что вы пытаетесь установить тип данных BIT.
Итак, где это работает:
// Given that $options['isAvailable'] = 12 and $options['id'] = 2
UPDATE Item SET `isAvailable` = 12 WHERE id=2
Это не удается:
UPDATE Item SET `isAvailable` = '12' WHERE id=2
... и происходит сбой только потому, что ваш столбец isAvailable имеет тип BIT.
Выше @ phil-sturgeon дал нам ответ, но мы можем просто упростить его так:
$itemDB->set('isAvailable', (int) $options['isAvailable']);
$itemDB->where('id', $options['id']);
$itemDB->update('Item');