PHP的一个简单ORM

v4.2 2024-01-28 13:49 UTC

This package is auto-updated.

Last update: 2024-09-28 15:18:39 UTC


README

这是一个简单的ORM数据库映射器,提供了一些便捷方法来查询、创建和更新对象。它不支持关联。相反,我使用约定,外键是表名后追加 '_uid'。另一个约定是,一个对象必须有一个名为 'uid' 的属性,当你调用 save 并且 uid == 0 时,它将被转换为插入语句,否则它将被转换为更新语句。

它基于我较旧的类似,但现在你可以使用类型化属性。

安装

此包可以通过Composer安装

`composer install bronsted\orm`

示例

以下是定义的一个示例类

class Sample extends DbObject
{
    protected int $uid = 0;
    protected ?string $name = null;
    protected ?DateTime $created = null;
}

此类将对应一个名为 sample 的表,其中属性是列。

如你所见,属性由类型描述,这意味着当对象从表行加载时,列会被转换为属性类型。这样,日期就不是字符串,而是一个具有有意义操作的日期对象。

创建对象并持久化

$sample = new Sample();
$uid = $sample->save();

查找一个或多个对象

// returns a single object
$sample = Sample::getByUid($uid);

// returns 0 or more objects
$samples = Sample::getBy(['name' => 'something%']);

更改属性并持久化

$sample = Sample::getByUid($uid);
$sample->name = 'Hello';
$sample->save();

删除对象

$sample = Sample::getByUid($uid);
$sample->delete();

您还可以访问DB类中较低级别的数据库函数,该函数提供DbObject到sql的转换,或者您可以自己编写sql。

配置

连接是通过纯PHP PDO完成的。

$pdo = new PDO('sqlite::memory:');
$dbCon = new DbConnection($pdo);
Db::setConnection($dbCon);