Nette Documentation Preview

syntax
Reflexe
*******

.{data-version:3.2.1}
A Nette Database eszközöket biztosít az adatbázisok szerkezetének áttekintéséhez a [api:Nette\Database\Reflection\Reflection] osztály segítségével. Ez lehetővé teszi a táblákról, oszlopokról, indexekről és idegen kulcsokról szóló információk lekérdezését. A reflexió használható séma generálására, rugalmas adatbázis-vezérelt alkalmazások létrehozására vagy általános adatbázis-eszközök létrehozására.

A reflection objektumot egy adatbázis-kapcsolati példányból szerezheti meg:

```php
$reflection = $connection->getReflection();
```


Munka táblázatokkal .[#toc-working-with-tables]
===============================================

A tükrözés segítségével az adatbázis összes tábláját böngészhetjük:


getTables(): Nette\Database\Reflection\Table[] .[method]
--------------------------------------------------------
Egy asszociatív tömböt ad vissza, ahol a kulcs a táblázat neve, az érték pedig a táblázat metaadatainak tömbje.

```php
// Az összes táblázat nevének listázása
foreach ($reflection->getTables() as $table) {
	echo $table['name'] . "\n";
}
```


hasTable(string $name): bool .[method]
--------------------------------------
Visszaadja a `true` értéket, ha a tábla létezik, egyébként `false`.

```php
// A táblázat létezésének ellenőrzése
if ($reflection->hasTable('users')) {
	echo "The 'users' table exists";
}
```


getTable(string $name): Nette\Database\Reflection\Table .[method]
-----------------------------------------------------------------
Visszaadja az adott táblázatot reprezentáló `Nette\Database\Reflection\Table` objektumot. Ha a táblázat nem létezik, akkor kivételt dob `Nette\Database\Exception\MissingTableException`.

```php
// Egy adott táblázat lekérdezése
$table = $reflection->getTable('users');
```


Információk az oszlopokról .[#toc-information-about-columns]
============================================================

A [api:Nette\Database\Reflection\Table] objektum, amelyet a `getTable()` meghívásával kapunk, lehetővé teszi a táblázat oszlopaira vonatkozó részletes információk lekérdezését.


getColumns(): Nette\Database\Reflection\Column[] .[method]
----------------------------------------------------------
A táblázat oszlopait reprezentáló `Nette\Database\Reflection\Column` objektumok tömbjét adja vissza.


getColumn(string $name): Nette\Database\Reflection\Column .[method]
-------------------------------------------------------------------
Visszaadja az adott oszlopot reprezentáló [api:Nette\Database\Reflection\Column] objektumot. Ha az oszlop nem létezik, akkor kivételt dob `Nette\Database\Exception\MissingColumnException`.

A `Column` objektum a következő tulajdonságokkal rendelkezik:

- `name`: Az oszlop neve.
- `nativeType`: Az adatbázis-specifikus oszlop adattípusa.
- `type`: Az oszlop normalizált adattípusa (lásd a `Nette\Utils\Type` konstansokat).
- `nullable`: `true`, ha az oszlop tartalmazhatja a `NULL`, egyébként `false`.
- `primary`: `true`, ha az oszlop az elsődleges kulcs része, egyébként `false`.
- `autoIncrement`: `true` ha az oszlop automatikusan növelhető, egyébként `false`.
- `default`: Az oszlop alapértelmezett értéke, vagy `null`, ha nincs definiálva.
- `vendor`: További adatbázis-specifikus információkat tartalmazó tömb.

```php
// A 'users' tábla összes oszlopán való ismételt végigfutás
$table = $reflection->getTable('users');
foreach ($table->getColumns() as $column) {
	echo "Column: " . $column->name . "\n";
	echo "Type: " . $column->nativeType . "\n";
	echo "Allows NULL: " . ($column->nullable ? 'Yes': 'No') . "\n";
	echo "Default value: " . ($column->default ?? 'None') . "\n";
	echo "Is primary key: " . ($column->primary ? 'Yes': 'No') . "\n";
	echo "Is auto-increment: " . ($column->autoIncrement ? 'Yes': 'No') . "\n";
}

// Egy adott oszlop lekérdezése
$idColumn = $table->getColumn('id');
```


Indexek és elsődleges kulcsok .[#toc-indexes-and-primary-keys]
==============================================================


getIndexes(): Nette\Database\Reflection\Index[] .[method]
---------------------------------------------------------
Visszaad egy `Nette\Database\Reflection\Index` objektumokból álló tömböt, amely a táblázat indexeit reprezentálja.


getIndex(string $name): Nette\Database\Reflection\Index .[method]
-----------------------------------------------------------------
Visszaadja az adott indexet reprezentáló [api:Nette\Database\Reflection\Index] objektumot. Ha az index nem létezik, akkor kivételt dob `Nette\Database\Exception\MissingIndexException`.


getPrimaryKey(): ?Nette\Database\Reflection\Index .[method]
-----------------------------------------------------------
Visszaadja a `Nette\Database\Reflection\Index` objektumot, amely a tábla elsődleges kulcsát képviseli, vagy a `null` objektumot, ha a táblának nincs elsődleges kulcsa.

A `Index` objektum a következő tulajdonságokkal rendelkezik:

- `name`: Az index neve.
- `columns`: Az index részét képező oszlopokat ábrázoló `Nette\Database\Reflection\Column` objektumok tömbje.
- `unique`: `true` ha az index egyedi, egyébként `false`.
- `primary`: `true` ha az index az elsődleges kulcs, egyébként `false`.

```php
$table = $reflection->getTable('users');

$printColumnNames = fn(array $columns) => implode(', ', array_map(fn($col) => $col->name, $columns));

// Az összes index listázása
foreach ($table->getIndexes() as $index) {
	echo "Index: " . ($index->name ?? 'Unnamed') . "\n";
	echo "Columns: " . $printColumnNames($index->columns) . "\n";
	echo "Is unique: " . ($index->unique ? 'Yes': 'No') . "\n";
	echo "Is primary key: " . ($index->primary ? 'Yes': 'No') . "\n";
}

// Az elsődleges kulcs lekérdezése
if ($primaryKey = $table->getPrimaryKey()) {
	echo "Primary key: " . $printColumnNames($primaryKey->columns) . "\n";
}
```


Idegen kulcsok .[#toc-foreign-keys]
===================================


getForeignKeys(): Nette\Database\Reflection\ForeignKey[] .[method]
------------------------------------------------------------------
Visszaad egy `Nette\Database\Reflection\ForeignKey` objektumokból álló tömböt, amely a táblázat idegen kulcsait reprezentálja.


getForeignKey(string $name): Nette\Database\Reflection\ForeignKey .[method]
---------------------------------------------------------------------------
Visszaadja az adott idegen kulcsot reprezentáló [api:Nette\Database\Reflection\ForeignKey] objektumot. Ha az idegen kulcs nem létezik, akkor kivételt dob `Nette\Database\Exception\MissingForeignKeyException`.

A `ForeignKey` objektum a következő tulajdonságokkal rendelkezik:

- `name`: Az idegen kulcs neve.
- `localColumns`: Az idegen kulcsot alkotó helyi oszlopokat reprezentáló `Nette\Database\Reflection\Column` objektumok tömbje.
- `foreignTable`: A `Nette\Database\Reflection\Table` objektum, amely az idegen kulcs által hivatkozott idegen táblát ábrázolja.
- `foreignColumns`: Az idegen kulcs által hivatkozott idegen oszlopokat reprezentáló `Nette\Database\Reflection\Column` objektumok tömbje.

```php
$table = $reflection->getTable('books');

$printColumnNames = fn(array $columns) => implode(', ', array_map(fn($col) => $col->name, $columns));

foreach ($table->getForeignKeys() as $fk) {
	echo "Foreign key: " . ($fk->name ?? 'Unnamed') . "\n";
	echo "Local columns: " . $printColumnNames($fk->localColumns) . "\n";
	echo "References table: {$fk->foreignTable->name}\n";
	echo "References columns: " . $printColumnNames($fk->foreignColumns) . "\n";
}
```

Reflexe

A Nette Database eszközöket biztosít az adatbázisok szerkezetének áttekintéséhez a Nette\Database\Reflection\Reflection osztály segítségével. Ez lehetővé teszi a táblákról, oszlopokról, indexekről és idegen kulcsokról szóló információk lekérdezését. A reflexió használható séma generálására, rugalmas adatbázis-vezérelt alkalmazások létrehozására vagy általános adatbázis-eszközök létrehozására.

A reflection objektumot egy adatbázis-kapcsolati példányból szerezheti meg:

$reflection = $connection->getReflection();

Munka táblázatokkal

A tükrözés segítségével az adatbázis összes tábláját böngészhetjük:

getTables(): Nette\Database\Reflection\Table[]

Egy asszociatív tömböt ad vissza, ahol a kulcs a táblázat neve, az érték pedig a táblázat metaadatainak tömbje.

// Az összes táblázat nevének listázása
foreach ($reflection->getTables() as $table) {
	echo $table['name'] . "\n";
}

hasTable(string $name): bool

Visszaadja a true értéket, ha a tábla létezik, egyébként false.

// A táblázat létezésének ellenőrzése
if ($reflection->hasTable('users')) {
	echo "The 'users' table exists";
}

getTable(string $name): Nette\Database\Reflection\Table

Visszaadja az adott táblázatot reprezentáló Nette\Database\Reflection\Table objektumot. Ha a táblázat nem létezik, akkor kivételt dob Nette\Database\Exception\MissingTableException.

// Egy adott táblázat lekérdezése
$table = $reflection->getTable('users');

Információk az oszlopokról

Nette\Database\Reflection\Table objektum, amelyet a getTable() meghívásával kapunk, lehetővé teszi a táblázat oszlopaira vonatkozó részletes információk lekérdezését.

getColumns(): Nette\Database\Reflection\Column[]

A táblázat oszlopait reprezentáló Nette\Database\Reflection\Column objektumok tömbjét adja vissza.

getColumn(string $name): Nette\Database\Reflection\Column

Visszaadja az adott oszlopot reprezentáló Nette\Database\Reflection\Column objektumot. Ha az oszlop nem létezik, akkor kivételt dob Nette\Database\Exception\MissingColumnException.

A Column objektum a következő tulajdonságokkal rendelkezik:

  • name: Az oszlop neve.
  • nativeType: Az adatbázis-specifikus oszlop adattípusa.
  • type: Az oszlop normalizált adattípusa (lásd a Nette\Utils\Type konstansokat).
  • nullable: true, ha az oszlop tartalmazhatja a NULL, egyébként false.
  • primary: true, ha az oszlop az elsődleges kulcs része, egyébként false.
  • autoIncrement: true ha az oszlop automatikusan növelhető, egyébként false.
  • default: Az oszlop alapértelmezett értéke, vagy null, ha nincs definiálva.
  • vendor: További adatbázis-specifikus információkat tartalmazó tömb.
// A 'users' tábla összes oszlopán való ismételt végigfutás
$table = $reflection->getTable('users');
foreach ($table->getColumns() as $column) {
	echo "Column: " . $column->name . "\n";
	echo "Type: " . $column->nativeType . "\n";
	echo "Allows NULL: " . ($column->nullable ? 'Yes': 'No') . "\n";
	echo "Default value: " . ($column->default ?? 'None') . "\n";
	echo "Is primary key: " . ($column->primary ? 'Yes': 'No') . "\n";
	echo "Is auto-increment: " . ($column->autoIncrement ? 'Yes': 'No') . "\n";
}

// Egy adott oszlop lekérdezése
$idColumn = $table->getColumn('id');

Indexek és elsődleges kulcsok

getIndexes(): Nette\Database\Reflection\Index[]

Visszaad egy Nette\Database\Reflection\Index objektumokból álló tömböt, amely a táblázat indexeit reprezentálja.

getIndex(string $name): Nette\Database\Reflection\Index

Visszaadja az adott indexet reprezentáló Nette\Database\Reflection\Index objektumot. Ha az index nem létezik, akkor kivételt dob Nette\Database\Exception\MissingIndexException.

getPrimaryKey(): ?Nette\Database\Reflection\Index

Visszaadja a Nette\Database\Reflection\Index objektumot, amely a tábla elsődleges kulcsát képviseli, vagy a null objektumot, ha a táblának nincs elsődleges kulcsa.

A Index objektum a következő tulajdonságokkal rendelkezik:

  • name: Az index neve.
  • columns: Az index részét képező oszlopokat ábrázoló Nette\Database\Reflection\Column objektumok tömbje.
  • unique: true ha az index egyedi, egyébként false.
  • primary: true ha az index az elsődleges kulcs, egyébként false.
$table = $reflection->getTable('users');

$printColumnNames = fn(array $columns) => implode(', ', array_map(fn($col) => $col->name, $columns));

// Az összes index listázása
foreach ($table->getIndexes() as $index) {
	echo "Index: " . ($index->name ?? 'Unnamed') . "\n";
	echo "Columns: " . $printColumnNames($index->columns) . "\n";
	echo "Is unique: " . ($index->unique ? 'Yes': 'No') . "\n";
	echo "Is primary key: " . ($index->primary ? 'Yes': 'No') . "\n";
}

// Az elsődleges kulcs lekérdezése
if ($primaryKey = $table->getPrimaryKey()) {
	echo "Primary key: " . $printColumnNames($primaryKey->columns) . "\n";
}

Idegen kulcsok

getForeignKeys(): Nette\Database\Reflection\ForeignKey[]

Visszaad egy Nette\Database\Reflection\ForeignKey objektumokból álló tömböt, amely a táblázat idegen kulcsait reprezentálja.

getForeignKey(string $name): Nette\Database\Reflection\ForeignKey

Visszaadja az adott idegen kulcsot reprezentáló Nette\Database\Reflection\ForeignKey objektumot. Ha az idegen kulcs nem létezik, akkor kivételt dob Nette\Database\Exception\MissingForeignKeyException.

A ForeignKey objektum a következő tulajdonságokkal rendelkezik:

  • name: Az idegen kulcs neve.
  • localColumns: Az idegen kulcsot alkotó helyi oszlopokat reprezentáló Nette\Database\Reflection\Column objektumok tömbje.
  • foreignTable: A Nette\Database\Reflection\Table objektum, amely az idegen kulcs által hivatkozott idegen táblát ábrázolja.
  • foreignColumns: Az idegen kulcs által hivatkozott idegen oszlopokat reprezentáló Nette\Database\Reflection\Column objektumok tömbje.
$table = $reflection->getTable('books');

$printColumnNames = fn(array $columns) => implode(', ', array_map(fn($col) => $col->name, $columns));

foreach ($table->getForeignKeys() as $fk) {
	echo "Foreign key: " . ($fk->name ?? 'Unnamed') . "\n";
	echo "Local columns: " . $printColumnNames($fk->localColumns) . "\n";
	echo "References table: {$fk->foreignTable->name}\n";
	echo "References columns: " . $printColumnNames($fk->foreignColumns) . "\n";
}