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