Oznámení
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.