phore/orm

对象关系映射器

dev-main 2024-07-10 22:44 UTC

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 操作、管理索引和外键,并维护数据库模式。