paigejulianne/picoorm

PicoORM:一个非常轻量级的ORM

1.7.1-alpha 2024-07-26 01:13 UTC

This package is auto-updated.

Last update: 2024-09-10 16:47:22 UTC


README

PicoORM:适用于PHP 8.0+的非常轻量级的ORM

作者:Paige Julianne Sullivan paige@paigejulianne.com

https://paigejulianne.com

背景

回到2010年,我正在构建一个需要大量数据库调用的托管VOIP PBX。我希望尽可能简单,而不需要导入一个庞大的ORM(你知道我在说什么)。我写了这段代码,并且多年来一直在对其进行持续改进。

贡献、问题和支持

欢迎你对源代码的贡献。请随意fork存储库并提交拉取请求。对于支持和问题,请使用GitHub问题跟踪器https://github.com/paigejulianne/picoorm/issues

你还可以在GitHub讨论页面上找到更多信息https://github.com/paigejulianne/picoorm/discussions

最后,你可以在我的博客上找到更多信息和相关教程https://paigejulianne.com/?s=picoorm

安装

通过composer

在您的CLI中执行以下命令

composer require paigejulianne/picoorm

通过直接下载

PicoORM.php文件下载到您的源目录中,并包含它。

include_once("PicoORM.php");

使用方法

设置PDO连接

$GLOBALS['_PICO_PDO'] = new PDO("mysql:host=hostname;dbname=database_name;","database_user","database_password");

继承PicoORM类

要开始使用表,只需扩展PicoORM类,将您的类命名为与表名相同的名称。例如,要使用名为users的表,您将创建一个名为Users的类,它扩展PicoORM。注意:如果使用MySQL或MariaDB,类/表名不区分大小写。其他数据库可能区分大小写。

注意:从版本1.7.1-alpha开始,此类的命名空间为PaigeJulianne\PicoORM

use PaigeJulianne\PicoORM;
class Users extends PicoORM {
    // your code here
}

PicoORM将假设表可以找到在PDO连接中指定的数据库中。如果您需要指定不同的数据库,可以通过在类名中添加前缀来实现。例如,如果您有一个名为users的表在名为mydatabase的数据库中,您将创建一个名为mydatabase\Users的类,它扩展PicoORM。示例

use PaigeJulianne\PicoORM;
class mydatabase\Users extends PicoORM {
    // your code here
}

从数据库加载记录

只需将主键值作为参数调用构造函数。例如,如果您的表有一个名为id的主键,您将像这样调用构造函数

$user = new Users(1);

使用不同的列作为主键从数据库加载记录

如果您的表使用不同的列作为主键,您可以将该列名指定为构造函数的第二个参数。例如,如果您的表有一个名为user_id的主键,您将像这样调用构造函数

$user = new Users(1,"user_id");

使用不同的列作为主键和不同的数据库从数据库加载记录

$user = new mydatabase\Users(1,"user_id");

创建新记录

要创建新记录,只需不带参数调用构造函数。例如

$user = new Users();

保存记录

要保存记录,只需调用save()方法。例如

$user->save();

删除记录

要删除记录,只需调用delete()方法。例如

$user->delete();

设置字段值

要设置字段值,只需设置属性。例如

$user->first_name = "Paige";

在调用 save() 方法或对象被销毁(超出作用域或脚本结束)之前,字段值不会保存到数据库中。

获取字段值

要获取字段值,只需获取属性。例如

echo $user->first_name;

使用自定义 SQL 查询

要使用自定义 SQL 查询,只需调用 query() 方法。例如

$user = new Users();
$user->query("SELECT * FROM __DB__ WHERE first_name = ? AND last_name = ?",["Paige","Sullivan"]);

注意:占位符 __ DB __ 将被替换为表名。例如,如果您的表名为 users,则查询将执行为

SELECT * FROM users WHERE first_name = ? AND last_name = ?

使用不同数据库的自定义 SQL 查询

$user = new mydatabase\Users();
$user->query("SELECT * FROM __DB__ WHERE first_name = ? AND last_name = ?",["Paige","Sullivan"]);