Codeigniter - режим тестирования транзакций не работает - PullRequest
2 голосов
/ 16 сентября 2011

Так что я делаю не так? Когда я запускаю следующий код, база данных всегда обновляется, даже если транзакции находятся в тестовом режиме.

/**
 * update_batch
 * This updates multiple rows. The data array must include the game_id and game_type_prize_id
 * @param array
 * @return bool
 * @author zechdc
 */
function update_batch($data)
{
    $result = TRUE;

    foreach($data as $prize)
    {
        $this->db->trans_start(TRUE); //first param is set to TRUE for test mode.
        $this->db->where('game_id', $prize['game_id']);
        $this->db->where('game_type_prize_id', $prize['game_type_prize_id']);
        $this->db->update('game_prizes', $prize);
        $this->db->trans_complete();

        if($this->db->affected_rows() == -1)
        {
            $result = FALSE;
        }
    }


    return $result;
}

Ответы [ 2 ]

6 голосов
/ 13 октября 2011

AbhishekDilliwal предоставил нам ответ в своих комментариях. Если он отправит ответ, я удалю свой и приму его, чтобы он получил кредит вместо меня.


Ответ:

Режим тестирования транзакций Codeigniter в настоящее время не работает.


Решение:

Заменить:

$this->_trans_failure = ($test_mode === TRUE) ? TRUE : FALSE;

с:

$this->_trans_status = ($test_mode === TRUE) ? FALSE : $this->_trans_status;

в следующих системных файлах codeigniter:

system/database/drivers/mysql/mysql_driver.php
system/database/drivers/mysqli/mysqli_driver.php
system/database/drivers/oci8/oci8_driver.php
system/database/drivers/odbc/odbc_driver.php
system/database/drivers/postgre/postgre_driver.php
system/database/drivers/sqlite/sqlite_driver.php

Похоже, rommelxcastro представил исправление в репозиторий github. Теперь нам остается только дождаться, пока Codeigniter запустит его и выпустит новую версию:)


Источники:

0 голосов
/ 16 сентября 2011

Вы пытались писать свои запросы в простом SQL, а не использовать библиотечные функции, такие как where () и update ()?Я не уверен в этом, но в документах CI в запросах отображается только функция query ().

http://codeigniter.com/user_guide/database/transactions.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...