mathsgod / light-db
1.0.3
2025-05-20 09:44 UTC
Requires
- php: >=8.1
- ext-pdo: *
- illuminate/collections: ^10.48
- laminas/laminas-db: ^2.20
- laminas/laminas-paginator: ^2.19
- vlucas/phpdotenv: *
Requires (Dev)
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^10.5
README
Light-DB
Light-DB is a lightweight ORM/database access layer for PHP 8.1+ based on Laminas DB. It supports automatic Model mapping, querying, relationships, JSON column operations, and is suitable for rapid modern PHP application development.
Features
- Based on Laminas DB, supports multiple databases
- Eloquent-like Model operation experience
- Automatic conversion and Proxy operation for JSON columns
- Supports relationship queries, dynamic queries, aggregation functions
- PHPUnit test support
Installation
composer install
Configuration
Create a .env
file in your project root with the following content:
DATABASE_HOSTNAME=localhost
DATABASE_DATABASE=your_db
DATABASE_USERNAME=your_user
DATABASE_PASSWORD=your_password
DATABASE_PORT=3306
DATABASE_CHARSET=utf8mb4
DATABASE_DRIVER=pdo_mysql
Basic Usage
Define a Model
use Light\Db\Model; class User extends Model {}
Create Data
$user = User::Create([ 'name' => 'Raymond', 'email' => 'raymond@example.com' ]); $user->save();
Query Data
$user = User::Get(1); $users = User::Query(['status' => 'active'])->toArray();
Update Data
$user = User::Get(1); $user->name = 'New Name'; $user->save();
Delete Data
$user = User::Get(1); $user->delete();
JSON Column Operation
$user = User::Get(1); $user->profile['nickname'] = 'Ray'; $user->save();
Relationship Query
Assuming you have a UserList Model with a user_id column:
$user = User::Get(1); $userLists = $user->UserList; // Get related UserList query object
Testing
composer test
License
MIT License