m.rahimi / astro-orm

一个简单的对象关系映射器(ORM),允许您使用流畅的接口操作数据。

v2.1.0 2023-12-10 20:40 UTC

This package is auto-updated.

Last update: 2024-09-13 22:33:30 UTC


README

astro-orm-banner

Total Downloads Latest Stable Version StyleCI License PHPStan

对象关系映射器(ORM),允许您使用面向对象的范式,通过流畅的API从数据库查询和操作数据。

📌 要求

  • PHP >= 7.2
  • PDO 扩展

⬇️ 安装

您可以通过 composer 安装此包

composer require m.rahimi/astro-orm

👀 它是如何工作的

UML

1. 设置数据库配置

config/database.php 文件中填写您的数据库配置。

注意:您可以使用任何数据库扩展,如:PDO、Mysqli、Sqlite等。只需定义其数组键。

2. 实现 Connection 合同

在这个项目中,我使用 PDO 驱动程序。因此,我创建了 Database/PDODatabaseConnection.php 文件并实现了合同方法。

connect();        // Which implements database connection
getConnection();  // Which return database connection

3. 使用查询构建器

现在获取数据库配置,创建 PDODatabaseConnection 的新实例并连接到数据库。

$this->config = $this->getConfigs('database', 'astro_orm');

$pdoConnection = new PDODatabaseConnection($this->config);
$pdoHandler = $pdoConnection->connect();

插入

插入数据:返回最后一个插入的 ID

$data = [
    'name'  => 'John',
    'email' => 'john.doe@gmail.com',
    'link'  => 'https://example.com',
    'skill' => 'PHP'
];

$last_id = PDOQueryBuilder::table('users')->create($data);

更新

更新数据:如果成功则返回 true

$result = PDOQueryBuilder::table('users')
    ->where('name', 'John')
    ->where('skill', 'PHP')
    ->update([
        'skill' => 'Javascript',
        'name' => 'Jeff',
        'email' => 'jeff@gmail.com'
    ]);

多个 where

$result = PDOQueryBuilder::table('users')
    ->where('name', 'John')
    ->where('skill', 'JS')
    ->update(['skill' => 'Javascript']);

多个 orWhere

$result = PDOQueryBuilder::table('users')
    ->orWhere('skill', 'PHP')
    ->orWhere('skill', 'JS')
    ->get();

删除

删除数据:如果成功则返回 true

$result = PDOQueryBuilder::table('users')
    ->where('name', 'John')
    ->delete();

获取

$result = PDOQueryBuilder::table('users')
    ->where('name', 'John')
    ->where('skill', 'Javascript')
    ->get();

获取第一行

$result = PDOQueryBuilder::table('users')
    ->where('name', 'First Row')
    ->first();

获取第一行或在失败时抛出异常

$result = PDOQueryBuilder::table('users')
    ->where('name', 'Jim')
    ->firstOrFail();

查找 ID

$result = PDOQueryBuilder::table('users')
    ->find($id);

查找 ID 或在失败时抛出异常

$result = PDOQueryBuilder::table('users')
    ->findOrFail($id);

按值查找

$result = PDOQueryBuilder::table('users')
    ->findBy('name', 'Jack');

获取特定行

$result = PDOQueryBuilder::table('users')
    ->where('name', 'Jack')
    ->limit(5)
    ->get();

排序行

$result = PDOQueryBuilder::table('users')
    ->orderBy('skill', 'DESC')
    ->get();

测试

使用以下命令运行测试

composer test

贡献

欢迎贡献!要贡献,请熟悉 CONTRIBUTE.md

安全性

如果您发现任何安全相关的问题,请通过电子邮件 mohammadreza.rahimi1373@gmail.com 而不是使用问题跟踪器。

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件