Nette Documentation Preview

syntax
Struktúra reflexió
******************

.{data-version:3.2.1}
A Nette Database eszközöket biztosít az adatbázis struktúrájának introspekciójához a [api:Nette\Database\Reflection] osztály segítségével. Ez lehetővé teszi információk lekérését táblákról, oszlopokról, indexekről és idegen kulcsokról. A reflexiót használhatja sémák generálásához, rugalmas, adatbázissal dolgozó alkalmazások létrehozásához vagy általános adatbázis-eszközök készítéséhez.

A reflexiós objektumot az adatbázis-kapcsolat példányából kapjuk meg:

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


Táblák lekérése
---------------

A `$reflection->tables` readonly property tartalmazza az adatbázis összes táblájának asszociatív tömbjét:

```php
// Az összes tábla nevének kiírása
foreach ($reflection->tables as $name => $table) {
	echo $name . "\n";
}
```

Két további metódus is rendelkezésre áll:

```php
// Tábla létezésének ellenőrzése
if ($reflection->hasTable('users')) {
	echo "A users tábla létezik";
}

// Visszaadja a tábla objektumot; ha nem létezik, kivételt dob
$table = $reflection->getTable('users');
```


Információ a tábláról
---------------------

A táblát egy [Table|api:Nette\Database\Reflection\Table] objektum reprezentálja, amely a következő readonly property-ket biztosítja:

- `$name: string` – tábla neve
- `$view: bool` – hogy nézetről van-e szó
- `$fullName: ?string` – a tábla teljes neve, beleértve a sémát (ha létezik)
- `$columns: array<string, Column>` – a tábla oszlopainak asszociatív tömbje
- `$indexes: Index[]` – a tábla indexeinek tömbje
- `$primaryKey: ?Index` – a tábla elsődleges kulcsa vagy null
- `$foreignKeys: ForeignKey[]` – a tábla idegen kulcsainak tömbje


Oszlopok
--------

A tábla `columns` property-je az oszlopok asszociatív tömbjét adja meg, ahol a kulcs az oszlop neve, az érték pedig egy [Column|api:Nette\Database\Reflection\Column] példány a következő property-kkel:

- `$name: string` – oszlop neve
- `$table: ?Table` – referencia az oszlop táblájára
- `$nativeType: string` – natív adatbázis típus
- `$size: ?int` – a típus mérete/hossza
- `$nullable: bool` – hogy az oszlop tartalmazhat-e NULL-t
- `$default: mixed` – az oszlop alapértelmezett értéke
- `$autoIncrement: bool` – hogy az oszlop auto-increment-e
- `$primary: bool` – hogy része-e az elsődleges kulcsnak
- `$vendor: array` – további, az adott adatbázis-rendszerre specifikus metaadatok

```php
foreach ($table->columns as $name => $column) {
	echo "Oszlop: $name\n";
	echo "Típus: {$column->nativeType}\n";
	echo "Nullable: " . ($column->nullable ? 'Igen' : 'Nem') . "\n";
}
```


Indexek
-------

A tábla `indexes` property-je az indexek tömbjét adja meg, ahol minden index egy [Index|api:Nette\Database\Reflection\Index] példány a következő property-kkel:

- `$columns: Column[]` – az indexet alkotó oszlopok tömbje
- `$unique: bool` – hogy az index egyedi-e
- `$primary: bool` – hogy elsődleges kulcsról van-e szó
- `$name: ?string` – az index neve

A tábla elsődleges kulcsát a `primaryKey` property segítségével lehet lekérni, amely vagy egy `Index` objektumot ad vissza, vagy `null`-t, ha a táblának nincs elsődleges kulcsa.

```php
// Indexek kiírása
foreach ($table->indexes as $index) {
	$columns = implode(', ', array_map(fn($col) => $col->name, $index->columns));
	echo "Index" . ($index->name ? " {$index->name}" : '') . ":\n";
	echo "  Oszlopok: $columns\n";
	echo "  Unique: " . ($index->unique ? 'Igen' : 'Nem') . "\n";
}

// Elsődleges kulcs kiírása
if ($primaryKey = $table->primaryKey) {
	$columns = implode(', ', array_map(fn($col) => $col->name, $primaryKey->columns));
	echo "Elsődleges kulcs: $columns\n";
}
```


Idegen kulcsok
--------------

A tábla `foreignKeys` property-je az idegen kulcsok tömbjét adja meg, ahol minden idegen kulcs egy [ForeignKey|api:Nette\Database\Reflection\ForeignKey] példány a következő property-kkel:

- `$foreignTable: Table` – a hivatkozott tábla
- `$localColumns: Column[]` – a helyi oszlopok tömbje
- `$foreignColumns: Column[]` – a hivatkozott oszlopok tömbje
- `$name: ?string` – az idegen kulcs neve

```php
// Idegen kulcsok kiírása
foreach ($table->foreignKeys as $fk) {
	$localCols = implode(', ', array_map(fn($col) => $col->name, $fk->localColumns));
	$foreignCols = implode(', ', array_map(fn($col) => $col->name, $fk->foreignColumns));

	echo "FK" . ($fk->name ? " {$fk->name}" : '') . ":\n";
	echo "  $localCols -> {$fk->foreignTable->name}($foreignCols)\n";
}
```

Struktúra reflexió

A Nette Database eszközöket biztosít az adatbázis struktúrájának introspekciójához a Nette\Database\Reflection osztály segítségével. Ez lehetővé teszi információk lekérését táblákról, oszlopokról, indexekről és idegen kulcsokról. A reflexiót használhatja sémák generálásához, rugalmas, adatbázissal dolgozó alkalmazások létrehozásához vagy általános adatbázis-eszközök készítéséhez.

A reflexiós objektumot az adatbázis-kapcsolat példányából kapjuk meg:

$reflection = $database->getReflection();

Táblák lekérése

A $reflection->tables readonly property tartalmazza az adatbázis összes táblájának asszociatív tömbjét:

// Az összes tábla nevének kiírása
foreach ($reflection->tables as $name => $table) {
	echo $name . "\n";
}

Két további metódus is rendelkezésre áll:

// Tábla létezésének ellenőrzése
if ($reflection->hasTable('users')) {
	echo "A users tábla létezik";
}

// Visszaadja a tábla objektumot; ha nem létezik, kivételt dob
$table = $reflection->getTable('users');

Információ a tábláról

A táblát egy Table objektum reprezentálja, amely a következő readonly property-ket biztosítja:

  • $name: string – tábla neve
  • $view: bool – hogy nézetről van-e szó
  • $fullName: ?string – a tábla teljes neve, beleértve a sémát (ha létezik)
  • $columns: array<string, Column> – a tábla oszlopainak asszociatív tömbje
  • $indexes: Index[] – a tábla indexeinek tömbje
  • $primaryKey: ?Index – a tábla elsődleges kulcsa vagy null
  • $foreignKeys: ForeignKey[] – a tábla idegen kulcsainak tömbje

Oszlopok

A tábla columns property-je az oszlopok asszociatív tömbjét adja meg, ahol a kulcs az oszlop neve, az érték pedig egy Column példány a következő property-kkel:

  • $name: string – oszlop neve
  • $table: ?Table – referencia az oszlop táblájára
  • $nativeType: string – natív adatbázis típus
  • $size: ?int – a típus mérete/hossza
  • $nullable: bool – hogy az oszlop tartalmazhat-e NULL-t
  • $default: mixed – az oszlop alapértelmezett értéke
  • $autoIncrement: bool – hogy az oszlop auto-increment-e
  • $primary: bool – hogy része-e az elsődleges kulcsnak
  • $vendor: array – további, az adott adatbázis-rendszerre specifikus metaadatok
foreach ($table->columns as $name => $column) {
	echo "Oszlop: $name\n";
	echo "Típus: {$column->nativeType}\n";
	echo "Nullable: " . ($column->nullable ? 'Igen' : 'Nem') . "\n";
}

Indexek

A tábla indexes property-je az indexek tömbjét adja meg, ahol minden index egy Index példány a következő property-kkel:

  • $columns: Column[] – az indexet alkotó oszlopok tömbje
  • $unique: bool – hogy az index egyedi-e
  • $primary: bool – hogy elsődleges kulcsról van-e szó
  • $name: ?string – az index neve

A tábla elsődleges kulcsát a primaryKey property segítségével lehet lekérni, amely vagy egy Index objektumot ad vissza, vagy null-t, ha a táblának nincs elsődleges kulcsa.

// Indexek kiírása
foreach ($table->indexes as $index) {
	$columns = implode(', ', array_map(fn($col) => $col->name, $index->columns));
	echo "Index" . ($index->name ? " {$index->name}" : '') . ":\n";
	echo "  Oszlopok: $columns\n";
	echo "  Unique: " . ($index->unique ? 'Igen' : 'Nem') . "\n";
}

// Elsődleges kulcs kiírása
if ($primaryKey = $table->primaryKey) {
	$columns = implode(', ', array_map(fn($col) => $col->name, $primaryKey->columns));
	echo "Elsődleges kulcs: $columns\n";
}

Idegen kulcsok

A tábla foreignKeys property-je az idegen kulcsok tömbjét adja meg, ahol minden idegen kulcs egy ForeignKey példány a következő property-kkel:

  • $foreignTable: Table – a hivatkozott tábla
  • $localColumns: Column[] – a helyi oszlopok tömbje
  • $foreignColumns: Column[] – a hivatkozott oszlopok tömbje
  • $name: ?string – az idegen kulcs neve
// Idegen kulcsok kiírása
foreach ($table->foreignKeys as $fk) {
	$localCols = implode(', ', array_map(fn($col) => $col->name, $fk->localColumns));
	$foreignCols = implode(', ', array_map(fn($col) => $col->name, $fk->foreignColumns));

	echo "FK" . ($fk->name ? " {$fk->name}" : '') . ":\n";
	echo "  $localCols -> {$fk->foreignTable->name}($foreignCols)\n";
}