tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Opakované volání procedur

před 8 lety

Mesiah
Člen | 242

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.

před 8 lety

Milo
Nette Core | 1119

$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.