Odsev strukture
Podatkovna baza Nette ponuja orodja za pregledovanje struktur podatkovne baze prek razreda Nette\Database\Reflection. Tako lahko pridobite informacije o tabelah, stolpcih, indeksih in tujih ključih. Odsev lahko uporabite za izdelavo shem, ustvarjanje prilagodljivih aplikacij za podatkovne zbirke ali izdelavo splošnih orodij za podatkovne zbirke.
Objekt refleksije lahko dobite iz primerka povezave s podatkovno bazo:
Pridobivanje tabel
Lastnost $reflection->tables
, ki je samo za branje, zagotavlja asociativno polje vseh tabel v zbirki
podatkov:
Na voljo sta dve dodatni metodi:
Informacije o tabeli
Tabela je predstavljena z objektom Table, ki vsebuje naslednje lastnosti, ki so samo za branje:
$name: string
– ime tabele$view: bool
– ali gre za pogled$fullName: ?string
– polno ime tabele, vključno s shemo (če je primerno)$columns: array<string, Column>
– asociativno polje stolpcev tabele$indexes: Index[]
– polje indeksov tabele$primaryKey: ?Index
– primarni ključ tabele alinull
$foreignKeys: ForeignKey[]
– polje tujih ključev tabele
Stolpci
Lastnost columns
tabele zagotavlja asociativno polje stolpcev, kjer je ključ ime stolpca, vrednost pa primerek stolpca z naslednjimi lastnostmi:
$name: string
– ime stolpca$table: ?Table
– sklic na tabelo stolpca$nativeType: string
– nativni tip zbirke podatkov$size: ?int
– velikost/dolžina tipa$nullable: bool
– ali lahko stolpec vsebujeNULL
$default: mixed
– privzeta vrednost stolpca$autoIncrement: bool
– ali se stolpec samodejno povečuje$primary: bool
– ali je stolpec del primarnega ključa$vendor: array
– dodatni metapodatki, značilni za sistem zbirke podatkov
Indeksi
Lastnost indexes
tabele vsebuje polje indeksov, pri čemer je vsak indeks primerek Index z naslednjimi lastnostmi:
$columns: Column[]
– polje stolpcev, ki sestavljajo indeks$unique: bool
– ali je indeks edinstven$primary: bool
– ali je indeks primarni ključ$name: ?string
– ime indeksa
Do primarnega ključa tabele lahko dostopamo prek lastnosti primaryKey
, ki vrne objekt Index
ali
null
, če ga tabela nima.
Tuji ključi
Lastnost foreignKeys
tabele vsebuje niz tujih ključev, od katerih je vsak predstavljen kot primerek ForeignKey z naslednjimi lastnostmi:
$foreignTable: Table
– referenčna tabela$localColumns: Column[]
– polje lokalnih stolpcev$foreignColumns: Column[]
– polje referenčnih stolpcev$name: ?string
– ime tujega ključa