phore / orm
对象关系映射器
Requires
- php: >=8.1
Requires (Dev)
- brixlab/coder: dev-main
- phore/tester: *
This package is auto-updated.
Last update: 2024-09-10 23:14:06 UTC
README
概述
Phore MiniSql 是一个轻量级的 PHP ORM 库,提供用于数据库操作(如创建、读取、更新、删除(CRUD))和模式管理的简单易用的接口。本 README 提供了详细的用法说明,包括实体定义、操作处理、索引、外键以及表/连接维护。
安装
要安装 Phore MiniSql,请使用 Composer
composer require phore/minisql
定义实体
实体定义为具有代表相应数据库表列的公共属性的 PHP 类。每个实体类都必须实现一个静态 __schema
方法,该方法返回一个 OrmClassSchema
对象。
namespace App\Entity; use Phore\MiniSql\Schema\OrmClassSchema; class User { public int $id; public string $name; public string $email; public static function __schema(): OrmClassSchema { return new OrmClassSchema( tableName: 'users', primaryKey: 'id', autoincrement: true, columns: [ 'id' => 'int', 'name' => 'varchar(255)', 'email' => 'varchar(255)' ] ); } }
使用方法
连接到数据库
要连接到数据库,创建一个 Orm
类的实例,并传入 DSN 和实体类。
use Phore\MiniSql\Orm; use App\Entity\User; $orm = new Orm([User::class], 'mysql:host=localhost;dbname=testdb;user=root;password=root'); $orm->connect();
创建记录
要创建新记录,实例化实体类,设置其属性,并调用 create
方法。
$user = new User(); $user->name = 'John Doe'; $user->email = 'john.doe@example.com'; $orm->create($user);
读取记录
要通过主键读取记录,使用 read
方法。
$user = $orm->withClass(User::class)->read(1);
更新记录
要更新记录,修改其属性,并调用 update
方法。
$user->name = 'Jane Doe'; $orm->update($user);
删除记录
要删除记录,调用 delete
方法。
$orm->delete($user);
列出所有记录
要列出实体的所有记录,使用 listAll
方法。
$users = $orm->withClass(User::class)->listAll();
根据条件选择记录
要选择具有特定条件的记录,使用 select
方法。
$users = $orm->withClass(User::class)->select(['name' => 'Jane Doe']);
索引
可以在 OrmClassSchema
中使用 indexes
属性定义索引。
public static function __schema(): OrmClassSchema { return new OrmClassSchema( tableName: 'users', primaryKey: 'id', autoincrement: true, columns: [ 'id' => 'int', 'name' => 'varchar(255)', 'email' => 'varchar(255)' ], indexes: [ 'idx_name' => ['name'], 'idx_email' => ['email'] ] ); }
外键
可以在 OrmClassSchema
中使用 foreignKeys
属性定义外键。
use Phore\MiniSql\Schema\OrmForeignKey; public static function __schema(): OrmClassSchema { return new OrmClassSchema( tableName: 'orders', primaryKey: 'id', autoincrement: true, columns: [ 'id' => 'int', 'user_id' => 'int', 'product_id' => 'int' ], foreignKeys: [ new OrmForeignKey('user_id', 'users', 'id'), new OrmForeignKey('product_id', 'products', 'id') ] ); }
维护表和连接
更新模式
要根据定义的实体更新数据库模式,使用 updateSchema
方法。
$orm->updateSchema();
删除所有表
要删除数据库中的所有表,使用 dropAllTables
方法。
$orm->getDriver()->getSchemaUpdater()->dropAllTables();
结论
Phore MiniSql 为在 PHP 中管理数据库操作提供了一种简单高效的方法。通过定义实体并使用提供的方法,您可以轻松执行 CRUD 操作、管理索引和外键,并维护数据库模式。