Reflectarea structurii
Nette Database oferă instrumente pentru inspectarea structurilor bazelor de date prin clasa Nette\Database\Reflection. Aceasta vă permite să obțineți informații despre tabele, coloane, indexuri și chei străine. Puteți utiliza reflecția pentru a genera scheme, a crea aplicații flexibile de baze de date sau a construi instrumente generale de baze de date.
Puteți obține obiectul reflection dintr-o instanță de conexiune la o bază de date:
Recuperarea tabelelor
Proprietatea readonly $reflection->tables
oferă un array asociativ al tuturor tabelelor din baza de date:
Există două metode suplimentare disponibile:
Informații despre masă
Un tabel este reprezentat de obiectul Table, care oferă următoarele proprietăți de tip readonly:
$name: string
– numele tabelului$view: bool
– dacă este o vizualizare$fullName: ?string
– numele complet al tabelului, inclusiv schema (dacă este cazul)$columns: array<string, Column>
– o matrice asociativă a coloanelor tabelului$indexes: Index[]
– o serie de indici ai tabelului$primaryKey: ?Index
– cheia primară a tabelului saunull
$foreignKeys: ForeignKey[]
– o matrice a cheilor străine ale tabelului
Coloane
Proprietatea columns
a unui tabel oferă o matrice asociativă de coloane, în care cheia este numele coloanei,
iar valoarea este o instanță a Column cu
următoarele proprietăți:
$name: string
– numele coloanei$table: ?Table
– o referință la tabelul coloanei$nativeType: string
– tipul nativ al bazei de date$size: ?int
– dimensiunea/lungimea tipului$nullable: bool
– dacă coloana poate conțineNULL
$default: mixed
– valoarea implicită a coloanei$autoIncrement: bool
– dacă coloana este auto-incrementată$primary: bool
– dacă coloana face parte din cheia primară$vendor: array
– metadate suplimentare specifice sistemului de baze de date
Indexuri
Proprietatea indexes
a unui tabel conține o serie de indexuri, unde fiecare index este o instanță de Index cu următoarele proprietăți:
$columns: Column[]
– o matrice de coloane care alcătuiesc indexul$unique: bool
– dacă indexul este unic$primary: bool
– dacă este o cheie primară$name: ?string
– numele indexului
Cheia primară a unui tabel poate fi accesată prin intermediul proprietății primaryKey
, care returnează un
obiect Index
sau null
dacă tabelul nu are una.
Chei străine
Proprietatea foreignKeys
a unui tabel conține o serie de chei străine, fiecare reprezentată ca o instanță
de ForeignKey cu următoarele
proprietăți:
$foreignTable: Table
– tabelul la care se face referire$localColumns: Column[]
– o serie de coloane locale$foreignColumns: Column[]
– o serie de coloane de referință$name: ?string
– numele cheii străine