krzysztofzylka / database-manager
Database Manager
1.1.0
2025-04-22 16:34 UTC
Requires
- php: >=8.1
- ext-pdo: *
- krzysztofzylka/arrays: ^1.0.2
Requires (Dev)
- mockery/mockery: ^1.6
- phpunit/phpunit: ^12.1
- dev-main
- 1.1.0
- 1.0.46
- 1.0.45
- 1.0.44
- 1.0.43
- 1.0.42
- 1.0.41
- 1.0.40
- 1.0.39
- v1.0.38
- v1.0.37
- v1.0.36
- v1.0.35
- v1.0.34
- v1.0.33
- v1.0.32
- v1.0.31
- v1.0.30
- v1.0.29
- v1.0.28
- v1.0.27
- v1.0.26
- v1.0.25
- v1.0.24
- v1.0.23
- v1.0.22
- v1.0.21
- v1.0.20
- v1.0.19
- v1.0.18
- v1.0.17
- v1.0.16
- v1.0.15
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.0.3-alpha
- v0.0.2-alpha
- v0.0.1-alpha
- dev-new
- dev-DM-6-Poprawi-query
- dev-DM-4-AlterTable-doda-metod-After
This package is auto-updated.
Last update: 2025-04-22 16:35:29 UTC
README
Wydajna biblioteka PHP do zarządzania operacjami bazodanowymi. Wspiera MySQL i SQLite, oferując wysoką wydajność oraz czytelny interfejs.
Wymagania
- PHP 8.1 lub nowszy
- Rozszerzenie PDO
- MySQL lub SQLite
Instalacja
composer require krzysztofzylka/database-manager
Podstawowe użycie
Nawiązywanie połączenia
$databaseManager = new \krzysztofzylka\DatabaseManager\DatabaseManager(); try { $connect = \krzysztofzylka\DatabaseManager\DatabaseConnect::create() ->setType(\krzysztofzylka\DatabaseManager\Enum\DatabaseType::mysql) ->setDatabaseName('database') ->setUsername('username') ->setPassword('password'); $databaseManager->connect($connect); } catch (\krzysztofzylka\DatabaseManager\Exception\DatabaseManagerException $exception) { die($exception->getHiddenMessage()); }
Operacje CRUD
Pobieranie danych
// Pobranie jednego rekordu $table = new \krzysztofzylka\DatabaseManager\Table('users'); $user = $table->find(['id' => 1]); // Pobranie wszystkich rekordów $users = $table->findAll(); // Liczenie rekordów $count = $table->findCount(['status' => 'active']); // Sprawdzenie istnienia $exists = $table->findIsset(['email' => 'example@domain.com']);
Dodawanie rekordów
$table = new \krzysztofzylka\DatabaseManager\Table('users'); $table->insert([ 'username' => 'john_doe', 'email' => 'john@example.com', 'created_at' => date('Y-m-d H:i:s') ]); // Pobranie ID nowo utworzonego rekordu $newId = $table->getId();
Aktualizacja rekordów
$table = new \krzysztofzylka\DatabaseManager\Table('users'); $table->setId(1)->update([ 'username' => 'updated_username', 'last_login' => date('Y-m-d H:i:s') ]); // Aktualizacja pojedynczej kolumny $table->setId(1)->updateValue('status', 'inactive');
Usuwanie rekordów
$table = new \krzysztofzylka\DatabaseManager\Table('users'); $table->delete(1); // Usunięcie po ID // Usuwanie według warunków $table->deleteByConditions(['status' => 'deleted']);
Zaawansowane zapytania
Złożone warunki wyszukiwania
// Proste warunki z operatorami $conditions = [ new \krzysztofzylka\DatabaseManager\Condition('age', '>', 18), new \krzysztofzylka\DatabaseManager\Condition('status', 'IN', ['active', 'pending']), 'is_verified' => true ]; $results = $table->findAll($conditions);
Złączenia tabel
$table = new \krzysztofzylka\DatabaseManager\Table('users'); $table->bind( \krzysztofzylka\DatabaseManager\Enum\BindType::leftJoin, 'orders', 'users.id', 'orders.user_id' ); $userWithOrders = $table->findAll();
Transakcje
$transaction = new \krzysztofzylka\DatabaseManager\Transaction(); try { $transaction->begin(); // Operacje bazodanowe $table->insert(['name' => 'Product 1']); $table->setId(5)->update(['stock' => 10]); $transaction->commit(); } catch (\Exception $e) { $transaction->rollback(); echo "Błąd: " . $e->getMessage(); }
Schemat bazy danych
Tworzenie tabel
$createTable = new \krzysztofzylka\DatabaseManager\CreateTable(); $createTable->setName('products'); $createTable->addIdColumn() ->addSimpleVarcharColumn('name', 255, false) ->addSimpleDecimalColumn('price', '10,2', 0.00) ->addSimpleIntColumn('stock', false, true) ->addDateCreatedColumn() ->addDateModifyColumn(); $createTable->execute();
Modyfikacja struktury tabeli
$alterTable = new \krzysztofzylka\DatabaseManager\AlterTable('products'); // Dodawanie nowej kolumny $column = new \krzysztofzylka\DatabaseManager\Column(); $column->setName('description') ->setType(\krzysztofzylka\DatabaseManager\Enum\ColumnType::text) ->setNull(true); $alterTable->addColumn($column); // Modyfikacja typu kolumny $alterTable->modifyColumn('name', \krzysztofzylka\DatabaseManager\Enum\ColumnType::varchar, 100); // Usunięcie kolumny $alterTable->removeColumn('old_column'); $alterTable->execute();
Zaawansowane funkcje
Cache zapytań
// Zapisanie danych w cache \krzysztofzylka\DatabaseManager\Cache::saveData('key', $value); // Odczytanie danych z cache $data = \krzysztofzylka\DatabaseManager\Cache::getData('key');
Blokady bazodanowe
$lock = new \krzysztofzylka\DatabaseManager\DatabaseLock(); // Zablokowanie zasobu if ($lock->lock('import_process', 300)) { // Wykonaj operację wymagającą wyłącznego dostępu // Zwolnienie blokady $lock->unlock('import_process'); }
Obsługa błędów
Biblioteka wykorzystuje dedykowane klasy wyjątków:
try { // Kod korzystający z DatabaseManager } catch (\krzysztofzylka\DatabaseManager\Exception\ConnectException $e) { // Błąd połączenia echo "Nie można połączyć z bazą danych: " . $e->getHiddenMessage(); } catch (\krzysztofzylka\DatabaseManager\Exception\TransactionException $e) { // Błąd transakcji echo "Błąd transakcji: " . $e->getHiddenMessage(); } catch (\krzysztofzylka\DatabaseManager\Exception\DatabaseManagerException $e) { // Ogólny błąd echo "Błąd bazy danych: " . $e->getHiddenMessage(); }
Licencja
MIT License. Pełna treść w pliku LICENSE.