phore/dba

数据库抽象层和ORM

dev-master 2019-08-06 12:25 UTC

This package is auto-updated.

Last update: 2024-09-08 19:20:34 UTC


README

TL;DR;

Phore-dba是PHP 7的一个非常简单的对象关系映射器。

它将对象映射到表,使用完全相同的名称。

  • 它可以与mysqli、sql和PDO一起使用。
  • 仅更新更改过的属性
  • 查看sqlite3示例

安装

使用composer安装

composer require phore/dba

示例

  • 创建实体类SomeEntity并定义__META__数据
  • 初始化一个到/path/to/sqlite.db3的Sqlite连接
  • 创建一个SomeEntity
  • 插入一个新实体,名称为someName,公司为SomeCompany
  • 使用each(callable $fn)将所有实体查询并映射回实体
  • 更新每个实体,然后delete()它(hm - 这只是一个演示)
class SomeEntity {
    use Entity;
    const __META__ = [ "primaryKey" => "id" ];
    public $id;
    public $name;
    public $company;
}

$odb = PhoreDba::InitDSN("sqlite:/path/to/sqlite.db3");
// Use multi_query() to execute multiple Statements
$odb->multi_query ("CREATE TABLE IF NOT EXISTS SomeEntity (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
    company TEXT
);");

$odb->insert(new SomeEntity(["name"=>"someName", "company"=>"SomeCompany"]));

$odb->query("SELECT * FROM SomeEntity WHERE name=?", ["UnescapedValue"])->each(
    function (array $row) use ($odb) {
        print_r ($entity = SomeEntity::Load($row["id"]);
        $entity->name = "MyNewName";
        $odb->update($entity);
        $odb->delete($entity);
    }
);

从数据库加载数据

$entity = $odb->load(SomeEntity::class, 103878);

或者 - 使用对象转换(IDE代码补全)

$entity = SomeEntity::Load(103878);

处理实体

实体必须通过调用load()方法来加载,以便框架可以跟踪更改。您应该只使用query()检索ID,然后之后加载实体。

更改的字段

$entity = SomeEntity::Load(1234); // Shortcut
$entity->name = "new Name";
assert ($enetity->isChanged("name") === true)