Skip to content

Commit ddc4067

Browse files
committed
nette/database 3.2.4
1 parent 3e2d3e4 commit ddc4067

33 files changed

+1504
-31
lines changed

database/bg/configuration.texy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ database:
4949
sqlmode: # (string)
5050

5151
# само за MySQL: set SET NAMES
52-
charset: # (string) по подразбиране е 'utf8mb4' ('utf8' преди v5.5.3)
52+
charset: # (string) по подразбиране е 'utf8mb4'
5353

5454
# само за MySQL: преобразува TINYINT(1) в bool
55-
supportBooleans: # (bool) по подразбиране е false
55+
convertBoolean: # (bool) по подразбиране е false
5656

5757
# връща колони с дати като неизменни обекти (от версия 3.2.1)
5858
newDateTime: # (bool) по подразбиране е false

database/bg/core.texy

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,3 +348,95 @@ $id = $database->transaction(function ($database) {
348348
Както можете да видите, методът `transaction()` връща стойността на обратната връзка.
349349

350350
Функцията Transaction() също може да бъде вложена, което опростява прилагането на независими хранилища.
351+
352+
353+
Отражение .[#toc-reflection]
354+
============================
355+
356+
Nette Database предоставя инструменти за интроспекция на структурата на базата данни чрез класа [api:Nette\Database\Reflection]. Този клас ви позволява да извличате информация за таблици, колони, индекси и външни ключове. Можете да използвате отразяването, за да генерирате схеми, да създавате гъвкави приложения, които работят с бази данни, или да изграждате общи инструменти за бази данни.
357+
358+
Можете да получите обект за отразяване от инстанция за връзка с база данни:
359+
360+
```php
361+
$reflection = $database->getReflection();
362+
```
363+
364+
365+
Работа с таблици .[#toc-working-with-tables]
366+
--------------------------------------------
367+
368+
С помощта на отразяването можете да правите итерации по всички таблици в базата данни:
369+
370+
```php
371+
// Избройте имената на всички таблици
372+
foreach ($reflection->tables as $tableName => $table) {
373+
echo $tableName . "\n";
374+
}
375+
376+
// Проверете дали дадена таблица съществува
377+
if ($reflection->hasTable('users')) {
378+
echo "The 'users' table exists";
379+
}
380+
381+
// Извличане на определена таблица
382+
$table = $reflection->getTable('users');
383+
```
384+
385+
386+
Информация за колоната .[#toc-column-information]
387+
-------------------------------------------------
388+
389+
За всяка таблица можете да получите подробна информация за нейните колони:
390+
391+
```php
392+
// Итерация над всички колони
393+
foreach ($table->columns as $column) {
394+
echo "Column: " . $column->name . "\n";
395+
echo "Type: " . $column->nativeType . "\n";
396+
echo "Nullable: " . ($column->nullable ? 'Yes': 'No') . "\n";
397+
echo "Default value: " . ($column->default ?? 'None') . "\n";
398+
echo "Primary key: " . ($column->primary ? 'Yes': 'No') . "\n";
399+
echo "Auto-increment: " . ($column->autoIncrement ? 'Yes': 'No') . "\n";
400+
}
401+
402+
// Извличане на конкретна колона
403+
$idColumn = $table->getColumn('id');
404+
```
405+
406+
407+
Индекси и първични ключове .[#toc-indexes-and-primary-keys]
408+
-----------------------------------------------------------
409+
410+
Отражението предоставя информация за индексите и първичните ключове:
411+
412+
```php
413+
$listColumnNames = fn(array $columns) => implode(', ', array_map(fn($col) => $col->name, $columns));
414+
415+
// Списък на всички индекси
416+
foreach ($table->indexes as $index) {
417+
echo "Index: " . ($index->name ?? 'Unnamed') . "\n";
418+
echo "Columns: " . $listColumnNames($index->columns) . "\n";
419+
echo "Unique: " . ($index->unique ? 'Yes': 'No') . "\n";
420+
echo "Primary key: " . ($index->primary ? 'Yes': 'No') . "\n";
421+
}
422+
423+
// Извличане на първичния ключ
424+
if ($table->primaryKey) {
425+
echo "Primary key: " . $listColumnNames($table->primaryKey->columns) . "\n";
426+
}
427+
```
428+
429+
430+
Чужди ключове .[#toc-foreign-keys]
431+
----------------------------------
432+
433+
Можете също така да получите информация за чуждите ключове:
434+
435+
```php
436+
foreach ($table->foreignKeys as $fk) {
437+
echo "Foreign key: " . ($fk->name ?? 'Unnamed') . "\n";
438+
echo "Local columns: " . $listColumnNames($fk->localColumns) . "\n";
439+
echo "References table: {$fk->foreignTable->name}\n";
440+
echo "References columns: " . $listColumnNames($fk->foreignColumns) . "\n";
441+
}
442+
```

database/cs/configuration.texy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ database:
4949
sqlmode: # (string)
5050

5151
# pouze MySQL: nastaví SET NAMES
52-
charset: # (string) výchozí je 'utf8mb4' ('utf8' před verzí 5.5.3)
52+
charset: # (string) výchozí je 'utf8mb4'
5353

5454
# pouze MySQL: převádí TINYINT(1) na bool
55-
supportBooleans: # (bool) výchozí je false
55+
convertBoolean: # (bool) výchozí je false
5656

5757
# vrací sloupce s datem jako immutable objekty (od verze 3.2.1)
5858
newDateTime: # (bool) výchozí je false

database/cs/core.texy

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,3 +348,95 @@ $id = $database->transaction(function ($database) {
348348
Jak vidíte, metoda `transaction()` vrací návratovou hodnotu callbacku.
349349

350350
Volání `transaction()` může být i zanořeno, což zjednodušuje implementaci nezávislých repozitářů.
351+
352+
353+
Reflexe .{data-version:3.2.1}
354+
=============================
355+
356+
Nette Database poskytuje nástroje pro introspekci databázové struktury pomocí třídy [api:Nette\Database\Reflection]. Ta umožňuje získávat informace o tabulkách, sloupcích, indexech a cizích klíčích. Reflexi můžete využít ke generování schémat, vytváření flexibilních aplikací pracujících s databází nebo obecných databázových nástrojů.
357+
358+
Objekt reflexe získáme z instance připojení k databázi:
359+
360+
```php
361+
$reflection = $database->getReflection();
362+
```
363+
364+
365+
Práce s tabulkami
366+
-----------------
367+
368+
Pomocí reflexe můžeme procházet všechny tabulky v databázi:
369+
370+
```php
371+
// Výpis názvů všech tabulek
372+
foreach ($reflection->tables as $tableName => $table) {
373+
echo $tableName . "\n";
374+
}
375+
376+
// Ověření existence tabulky
377+
if ($reflection->hasTable('users')) {
378+
echo "Tabulka users existuje";
379+
}
380+
381+
// Získání konkrétní tabulky
382+
$table = $reflection->getTable('users');
383+
```
384+
385+
386+
Informace o sloupcích
387+
---------------------
388+
389+
Pro každou tabulku můžeme získat detailní informace o jejích sloupcích:
390+
391+
```php
392+
// Procházení všech sloupců
393+
foreach ($table->columns as $column) {
394+
echo "Sloupec: " . $column->name . "\n";
395+
echo "Typ: " . $column->nativeType . "\n";
396+
echo "Může být NULL: " . ($column->nullable ? 'Ano' : 'Ne') . "\n";
397+
echo "Výchozí hodnota: " . ($column->default ?? 'Není') . "\n";
398+
echo "Je primární klíč: " . ($column->primary ? 'Ano' : 'Ne') . "\n";
399+
echo "Je auto-increment: " . ($column->autoIncrement ? 'Ano' : 'Ne') . "\n";
400+
}
401+
402+
// Získání konkrétního sloupce
403+
$idColumn = $table->getColumn('id');
404+
```
405+
406+
407+
Indexy a primární klíče
408+
-----------------------
409+
410+
Reflection poskytuje informace o indexech a primárních klíčích:
411+
412+
```php
413+
$vypisNazvySloupcu = fn(array $columns) => implode(', ', array_map(fn($col) => $col->name, $columns));
414+
415+
// Výpis všech indexů
416+
foreach ($table->indexes as $index) {
417+
echo "Index: " . ($index->name ?? 'Nepojmenovaný') . "\n";
418+
echo "Sloupce: " . $vypisNazvySloupcu($index->columns) . "\n";
419+
echo "Je unikátní: " . ($index->unique ? 'Ano' : 'Ne') . "\n";
420+
echo "Je primární klíč: " . ($index->primary ? 'Ano' : 'Ne') . "\n";
421+
}
422+
423+
// Získání primárního klíče
424+
if ($table->primaryKey) {
425+
echo "Primární klíč: " . $vypisNazvySloupcu($table->primaryKey->columns) . "\n";
426+
}
427+
```
428+
429+
430+
Cizí klíče
431+
----------
432+
433+
Můžeme také získat informace o cizích klíčích:
434+
435+
```php
436+
foreach ($table->foreignKeys as $fk) {
437+
echo "Cizí klíč: " . ($fk->name ?? 'Nepojmenovaný') . "\n";
438+
echo "Lokální sloupce: " . $vypisNazvySloupcu($fk->localColumns) . "\n";
439+
echo "Odkazuje na tabulku: {$fk->foreignTable->name}\n";
440+
echo "Odkazuje na sloupce: " . $vypisNazvySloupcu($fk->foreignColumns) . "\n";
441+
}
442+
```

database/cs/explorer.texy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ Database Explorer umí chytře escapovat parametry a identifikátory. Pro správ
339339
| `$row = $table->fetch()` | Vrátí další řádek výsledku
340340
| `$array = $table->fetchPairs($key, $value)` | Vrátí všechny výsledky jako asociativní pole
341341
| `$array = $table->fetchPairs($value)` | Vrátí všechny řádky jako asociativní pole
342+
| `$array = $table->fetchPairs($callable)` | Callback vrací `[$value]` nebo `[$key, $value]`
342343
| `count($table)` | Vrátí počet řádků výsledku
343344

344345

database/de/configuration.texy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ database:
4949
sqlmode: # (string)
5050

5151
# nur MySQL: setzt SET NAMES
52-
charset: # (string) Standardwert ist 'utf8mb4' ('utf8' vor v5.5.3)
52+
charset: # (string) Standardwert ist 'utf8mb4'
5353

5454
# nur MySQL: wandelt TINYINT(1) in bool um
55-
supportBooleans: # (bool) standardmäßig false
55+
convertBoolean: # (bool) standardmäßig false
5656

5757
# Gibt Datumsspalten als unveränderliche Objekte zurück (seit Version 3.2.1)
5858
newDateTime: # (bool) standardmäßig false

database/de/core.texy

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,3 +348,95 @@ $id = $database->transaction(function ($database) {
348348
Wie Sie sehen können, gibt die Methode `transaction()` den Rückgabewert des Callbacks zurück.
349349

350350
Die Transaktion() kann auch verschachtelt werden, was die Implementierung unabhängiger Repositories vereinfacht.
351+
352+
353+
Reflexion .[#toc-reflection]
354+
============================
355+
356+
Nette Database bietet mit der Klasse [api:Nette\Database\Reflection] Werkzeuge für die Introspektion der Datenbankstruktur. Mit dieser Klasse können Sie Informationen über Tabellen, Spalten, Indizes und Fremdschlüssel abrufen. Sie können Reflection verwenden, um Schemata zu generieren, flexible Anwendungen zu erstellen, die mit Datenbanken arbeiten, oder allgemeine Datenbank-Tools zu entwickeln.
357+
358+
Sie können ein Reflection-Objekt von einer Datenbankverbindungsinstanz abrufen:
359+
360+
```php
361+
$reflection = $database->getReflection();
362+
```
363+
364+
365+
Arbeiten mit Tabellen .[#toc-working-with-tables]
366+
-------------------------------------------------
367+
368+
Mit Hilfe von Reflection können Sie über alle Tabellen in der Datenbank iterieren:
369+
370+
```php
371+
// Auflisten der Namen aller Tabellen
372+
foreach ($reflection->tables as $tableName => $table) {
373+
echo $tableName . "\n";
374+
}
375+
376+
// Prüfen, ob eine Tabelle existiert
377+
if ($reflection->hasTable('users')) {
378+
echo "The 'users' table exists";
379+
}
380+
381+
// Abrufen einer bestimmten Tabelle
382+
$table = $reflection->getTable('users');
383+
```
384+
385+
386+
Informationen zur Säule .[#toc-column-information]
387+
--------------------------------------------------
388+
389+
Für jede Tabelle können Sie detaillierte Informationen über ihre Spalten erhalten:
390+
391+
```php
392+
// Iterieren über alle Spalten
393+
foreach ($table->columns as $column) {
394+
echo "Column: " . $column->name . "\n";
395+
echo "Type: " . $column->nativeType . "\n";
396+
echo "Nullable: " . ($column->nullable ? 'Yes': 'No') . "\n";
397+
echo "Default value: " . ($column->default ?? 'None') . "\n";
398+
echo "Primary key: " . ($column->primary ? 'Yes': 'No') . "\n";
399+
echo "Auto-increment: " . ($column->autoIncrement ? 'Yes': 'No') . "\n";
400+
}
401+
402+
// Eine bestimmte Spalte abrufen
403+
$idColumn = $table->getColumn('id');
404+
```
405+
406+
407+
Indizes und Primärschlüssel .[#toc-indexes-and-primary-keys]
408+
------------------------------------------------------------
409+
410+
Reflection bietet Informationen zu Indizes und Primärschlüsseln:
411+
412+
```php
413+
$listColumnNames = fn(array $columns) => implode(', ', array_map(fn($col) => $col->name, $columns));
414+
415+
// Alle Indizes auflisten
416+
foreach ($table->indexes as $index) {
417+
echo "Index: " . ($index->name ?? 'Unnamed') . "\n";
418+
echo "Columns: " . $listColumnNames($index->columns) . "\n";
419+
echo "Unique: " . ($index->unique ? 'Yes': 'No') . "\n";
420+
echo "Primary key: " . ($index->primary ? 'Yes': 'No') . "\n";
421+
}
422+
423+
// Abrufen des Primärschlüssels
424+
if ($table->primaryKey) {
425+
echo "Primary key: " . $listColumnNames($table->primaryKey->columns) . "\n";
426+
}
427+
```
428+
429+
430+
Ausländische Schlüssel .[#toc-foreign-keys]
431+
-------------------------------------------
432+
433+
Sie können auch Informationen über Fremdschlüssel erhalten:
434+
435+
```php
436+
foreach ($table->foreignKeys as $fk) {
437+
echo "Foreign key: " . ($fk->name ?? 'Unnamed') . "\n";
438+
echo "Local columns: " . $listColumnNames($fk->localColumns) . "\n";
439+
echo "References table: {$fk->foreignTable->name}\n";
440+
echo "References columns: " . $listColumnNames($fk->foreignColumns) . "\n";
441+
}
442+
```

database/el/configuration.texy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ database:
4949
sqlmode: # (string)
5050

5151
# μόνο MySQL: ορίζει SET NAMES
52-
charset: # (string) προεπιλογή 'utf8mb4' ('utf8' πριν την έκδοση v5.5.3)
52+
charset: # (string) προεπιλογή 'utf8mb4'
5353

5454
# μόνο MySQL: μετατρέπει το TINYINT(1) σε bool
55-
supportBooleans: # (bool) προεπιλογή σε false
55+
convertBoolean: # (bool) προεπιλογή σε false
5656

5757
# επιστρέφει τις στήλες ημερομηνίας ως αμετάβλητα αντικείμενα (από την έκδοση 3.2.1)
5858
newDateTime: # (bool) με προεπιλογή false

0 commit comments

Comments
 (0)