Pogledajte određenu poruku
Staro 08. 02. 2012.   #1
spezia
član
Certified
 
Datum učlanjenja: 21.05.2010
Lokacija: Nis
Poruke: 54
Hvala: 24
450 "Hvala" u 10 poruka
spezia is on a distinguished roadspezia is on a distinguished roadspezia is on a distinguished roadspezia is on a distinguished roadspezia is on a distinguished road
Default CodeIgniter i Transaction

Imam sledeci problem... Treba da koristim transakcije jer imam 3 upita update za 3 tabele, koji treba da se odrade u nizu...
Posto CI podrzava transakcije odlucio sam se za njivo resenje, a nude 2.

I Nacin

$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->trans_complete();

if ($this->db->trans_status() === FALSE)
{
// generate an error... or use the log_message() function to log your error
}

II Nacin

$this->db->trans_begin();

$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');

if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
}
else
{
$this->db->trans_commit();
}

Probao sam oba nacina i javlja mi se sledeci problem...
Prva dva upita su ok i rade a treci sam pokusao da pokvarim na sledeci nacin

$this->db->where('id', 4745)->update($this->_dbTableNum, $dataOtherTablesStatus);

Problem je sto nemam ovaj ID u bazi, znaci ne vrsi update... Pokusam sam za ID da unesem i string 'fgygog', a on uvek vraca true za gornji query. Pa transakcija radi, upise u 2 tabele u trecu nista... A to je ono lose. Kako zapravo ovo radi u CI.
Ja sam resio na sledeci nacin..

$query3 = $this->db->where('id', 4745)->update($this->_dbTableNum, $dataOtherTablesStatus);
if(!$query3 || $this->db->affected_rows() == 0)
{
$error = 1;
} else {}

if ($error === 1)
{
$this->db->trans_rollback();
... bla bla

Ovo radi, ali mene zanima sta je sa zvanicnim CI i njegovim preporukama za transkacije... Kako to radi, nije mi bas jasno..
http://codeigniter.com/user_guide/da...nsactions.html
spezia je offline   Odgovorite uz citat
"Hvala" spezia za poruku: