phore / dba
数据库抽象层和ORM
dev-master
2019-08-06 12:25 UTC
Requires
- php: >=7.1
- ext-pcre: *
- phore/cli: ^1.0
Requires (Dev)
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)