m.rahimi / astro-orm
一个简单的对象关系映射器(ORM),允许您使用流畅的接口操作数据。
v2.1.0
2023-12-10 20:40 UTC
Requires
- php: ^7.2.5||^8.0
- ext-pdo: *
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-13 22:33:30 UTC
README
对象关系映射器(ORM),允许您使用面向对象的范式,通过流畅的API从数据库查询和操作数据。
📌 要求
- PHP >= 7.2
- PDO 扩展
⬇️ 安装
您可以通过 composer 安装此包
composer require m.rahimi/astro-orm
👀 它是如何工作的
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)。有关更多信息,请参阅 许可证文件。
