Odkazy: dibi | API reference

Forum: [česky] [english]

dibi fórum

tiny ‘n’ smart
database layer

Nejste přihlášen(a)

#1 před 10 měsíci

Mesiah
Člen
Registrovaný: 25. 3. 2009
Příspěvky: 147

Opakované volání procedur

Teďka jsem v Nette2 a Dibi1.5 potřeboval volat více uložených procedůr, jenže s tím je problém.
Více info lze najít v tomto topicu.
Je tam sice rozšíření MySQLi driveru, jenže je problém s tím, že field $connection je private, takže je potřeba upravit $connection aji v DibiMySQLi driveru na protected, alespoň.
Pak jsem měl ještě problém s exception MemberAccessException v DibiObject u magické metody get. V DibiExceptions se vytváří jestliže není devinované Nette, ale Nette jej vytvořilo v jiným namespace (Nette) takže tady doporučuji úpravu.
A poslední problém na který jsem narazil bylo, že laděnka mi hlasíla „chybu“ strict u MySQLiProcedure driveru v metodě trashMoreResults(). Konkretně se jí nelíbilo, že volám mysqli_next_result a předtím nekontroluji, jestli obsahuje nějaké výsledky. Oravovalo mě to, takže hloupá úprava…

/**
* Throws away all the remaining results from the most recent query.
*/
private function trashMoreResults()
{
        if (mysqli_more_results($this->connection)) {
                while (mysqli_next_result($this->connection))
                      if (!mysqli_more_results($this->connection))
                             break;
        }
}

Snad to panu Ondřeji Boudovi nebude vadit, že jsem provedl drobnou úpravu a děkuji mu za zveřejnění jeho kódu.

 

#2 před 10 měsíci

Milo
dibi guru
Registrovaný: 4. 5. 2010
Příspěvky: 298

Re: Opakované volání procedur

$connection sice private je, ale lze volat public funkci getResource() která zdroj vrací.
A tento commit řeší problém s vyjímkami a Nette namespace.

 

Zápatí