tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

DibiTableInfo nevraci jmeno primarniho klice

před 11 lety

arron
Člen | 462
$dbInfo = dibi::getDatabaseInfo();
$tableInfo = $dbInfo->getTable('foo');
$primaryKey = $tableInfo->getPrimaryKey();
echo $primaryKey->getName();

vypise ‚PRIMARY‘. Ocekaval jsem jmeno primarniho klice (napr. foo_id).

Chyba, vypada to, vznika v mysql driveru na radku 473:

$res[$row['Key_name']]['name'] = $row['Key_name']; //radek 473 v mysql.php

//ocekaval bych
 $res[$row['Key_name']]['name'] = $row['Column_name'];

Revize 166.

před 11 lety

David Grudl
Nette Core | 6806

To je v pořádku. Seznam sloupců, které tvoří primární klíč, vrací $primaryKey->getColumns().

(primární je „klíč“, nikoliv „sloupec“, tj. primární klíč a vůbec jakýkoliv index může tvořit více sloupců)

před 11 lety

arron
Člen | 462

Ok. Diky.

před 10 lety

romansklenar
Člen | 657

Taky mě to zmátlo, protože v api třídy DibiIndexInfo je uvedeno jako popis „Reflection metadata class for a index or primary key.“. Možná by stálo za to tam zmínit, že třída reprezentuje množinu indexů a klíčů a k popisu metody getColumns() dopsat, že vrací až to pole objektů DibiColumnInfo. V případě, že by byl jen jeden, mohl by ho imho i rovnou vrátit.

Editoval romansklenar (15. 4. 2009 22:34)

před 10 lety

David Grudl
Nette Core | 6806

DibiIndexInfo skutečně představuje jen jeden index. A jeden index může být tvořen více sloupci, proto je tam getColumns které vrací pole DibiColumnInfo.