phore / dba
Database abstraction layer and 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-12-08 19:48:08 UTC
README
TL;DR;
Phore-dba is a very simple Object-Relational Mapper for PHP 7.
It will map Objects to Tables using exact the same Names.
- It will work with mysqli, sql, and PDO in gerneral.
- Update only changed properties
- See sqlite3 example
Installation
Install using composer:
composer require phore/dba
Example
- Create as Entity Class
SomeEntity
and define__META__
data - Initialize a Sqlite Connection to
/path/to/sqlite.db3
- Create a Table
SomeEntity
- Insert a new Entity for
name: someName
andcompany: SomeCompany
query()
all Entities and map them back to Entity usingeach(callable $fn)
update()
each entity, thendelete()
it (hm - it's just a demo)
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); } );
Loading from Database
$entity = $odb->load(SomeEntity::class, 103878);
or - with object casting (IDE Code-Completion):
$entity = SomeEntity::Load(103878);
Working with entities
Entities must be loaded calling the load()
method, so the framework
can track changes. You should use query()
only to retrieve Id's and
load the entities afterwards.
Changed fields
$entity = SomeEntity::Load(1234); // Shortcut $entity->name = "new Name"; assert ($enetity->isChanged("name") === true)