2017 © Pedro Peláez
 

library dba

Database abstraction layer and ORM

image

phore/dba

Database abstraction layer and ORM

  • Thursday, July 26, 2018
  • by dermatthes
  • Repository
  • 1 Watchers
  • 0 Stars
  • 6 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

Phore Dba (DatabaseAbstraction)

TL;DR;

Phore-dba is a very simple Object-Relational Mapper for PHP 7., (*1)

It will map Objects to Tables using exact the same Names., (*2)

  • It will work with mysqli, sql, and PDO in gerneral.
  • Update only changed properties
  • See sqlite3 example

Installation

Install using composer:, (*3)

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 and company: SomeCompany
  • query() all Entities and map them back to Entity using each(callable $fn)
  • update() each entity, then delete() 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):, (*4)

$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., (*5)

Changed fields

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

The Versions

26/07 2018

dev-master

9999999-dev

Database abstraction layer and ORM

  Sources   Download

MIT

The Requires

 

The Development Requires