kachit/doctrine-datamapper

Simple datamapper powered by doctrine 2 dbal

3.2.0 2021-09-12 18:10 UTC

This package is auto-updated.

Last update: 2024-04-13 00:01:03 UTC


README

License Build Status codecov Latest Stable Version Total Downloads

Simple datamapper powered by doctrine2

<?php
//create database connection
$params = [
    'driver' => 'pdo_pgsql',
    'host' => '127.0.0.1',
    'port' => 5432,
    'dbname' => 'db',
    'user' => 'postgres',
    'password' => '',
];
$connection = Doctrine\DBAL\DriverManager::getConnection($params);
<?php
//create your table gateway
class FooGateway extends Kachit\Database\Gateway
{
    /**
     * @return string
     */
    public function getTableName(): string
    {
        return 'users';
    }
}

$gateway = new FooGateway($connection);

//fetch by PK
$row = $gateway->fetchByPk(1);

//fetch all without filter
$rows = $gateway->fetchAll();

//fetch list with filter (all active)
$filter = new Kachit\Database\Query\Filter();
$filter->createCondition('active', true);
$rows = $gateway->fetchAll($filter);
<?php
//create entity
class FooEntity extends Kachit\Database\Entity
{
    /**
     * @var int
     */
    protected $id;

    /**
     * @return int
     */
    public function getId(): int
    {
        return $this->id;
    }

    /**
     * @param int $id
     * @return FooEntity
     */
    public function setId(int $id)
    {
        $this->id = $id;
        return $this;
    }
}
//create mapper
$gateway = new FooGateway();
$entity = new FooEntity();
$mapper = new Kachit\Database\Mapper($gateway, $entity);

//fetch by PK
$entity = $mapper->fetchByPk(1);

//fetch all without filter
$collection = $mapper->fetchAll();

//fetch list with filter (all active)
$filter = new Kachit\Database\Query\Filter();
$filter->createCondition('active', true);
$collection = $mapper->fetchAll($filter);