Získání resource pro připojení z Nette\Database\Connection
- blacksun
- Člen | 177
Je možné nějak získat připojení (resource), které vytvoří/obsahuje
Nette\Database\Connection při připojení k databázi?
Při implementaci metody getColumns v ODBC ovladači mě napadlo využít
funkci odbc_columns, která vyžaduje jako první parametr připojení, ale
objekt Nette\Database\Connection se jí nelíbí.
V dokumentaci ani na fóru jsem nic kloudného nenašel :-/
- frosty22
- Člen | 373
No pokud je mi známo, tak ODBC je alternativní knihovna pro práci
s databází – PHPko jich obsahuje několik ODBC, PDO, DBA, … a
v Nette/Connection je použito PDO, čili ODBC v tomto případě
nedostaneš.
Akorát tedy pokud chceš získat sloupce nějaké tabulky, tak na to lze v PDO
či jiném několik způsoby:
- Buď z InformationSchema, což bych asi doporučil, toť databáze z které lze získat v podstatě veškeré informace o tabulkách, atd.
- Nebo pomocí meta dat: http://php.net/…lumnmeta.php
- Přes dotaz DESCRIBE, něco jako:
<?php
$q = $connection->prepare("DESCRIBE tablename");
$q->execute();
$table_fields = $q->fetchAll(PDO::FETCH_COLUMN);
?>
- Filip Procházka
- Moderator | 4668
Nette\Database\Drivers\MySqlDriver::getColumns()
$connection->getSupplementalDriver()->getColumns($table);
- blacksun
- Člen | 177
Právě getColumns() potřebuju implementovat.. už jsem to udělal přes dotaz na INFORMATION_SCHEMA.COLUMNS a frčí to, ne teda všechny pole jako např. u MySQL, ale většina ano.
A hned v zápětí jsem se zasekl na tom, že NiftyGrid asi nepoužívá pro skládání dotazu patřiční driver a vyhodí mi dotaz SELECT * FROM ARTICLES LIMIT 20 OFFSET 0 i pro odbc ovladač, což je špatně.