Získání resource pro připojení z Nette\Database\Connection

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
blacksun
Člen | 177
+
0
-

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
+
0
-

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:

  1. 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.
  2. Nebo pomocí meta dat: http://php.net/…lumnmeta.php
  3. 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
+
0
-

Nette\Database\Drivers\MySqlDriver::getColumns()

$connection->getSupplementalDriver()->getColumns($table);
blacksun
Člen | 177
+
0
-

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