manuelj555 / orm
There is no license information available for the latest version (dev-master) of this package.
dev-master
2014-05-30 00:06 UTC
Requires
Requires (Dev)
This package is auto-updated.
Last update: 2024-12-22 03:15:53 UTC
README
Simple ORM para persistencia de Objetos en Base de Datos.
Configuración
Para establecer la Configuración de conexión se debe hacer de la siguiente manera:
<?php use Manuelj555\ORM\Db; // Usando un array Db::factory(array( 'default' => array( 'driver' => 'mysql', 'dbname' => 'test', 'username' => 'root', 'password' => null, 'cache' => __DIR__ . '/cache/', //directorio donde se cachea la info de las tablas. 'debug' => true, //opcional, por defecto true 'options' => array( //opciones para la conexión PDO PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ), ), 'otra' => array( 'driver' => 'sqlite', 'dbname' => 'test', 'username' => 'root', 'password' => null, 'cache' => __DIR__ . '/cache/', ) )); // Usando una función Db::factory(function(){ //debe retornar un arreglo de conexiones. return array( 'default' => array( 'driver' => 'mysql', 'dbname' => 'test', 'username' => 'root', 'password' => null, 'cache' => __DIR__ . '/cache/', //directorio donde se cachea la info de las tablas. 'debug' => true, //opcional, por defecto true 'options' => array( //opciones para la conexión PDO PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ), ) ); });
Consultas
<?php use Manuelj555\ORM\Db; $conection = Db::get(); //por defecto devuelve la conexión 'default'; $conection = Db::get('otra'); $conection->createQuery("SELECT * FROM usuarios")->fetchAll(); $conection->createQuery("SELECT * FROM usuarios WHERE nombre = :nom", array(':nombre' => 'Manuel')->fetchAll(); $conection->createQuery("SELECT * FROM usuarios WHERE nombre = ?", array('Manuel')->fetchAll(); //Usando Db directo: Db::get('otra')->createQuery("SELECT * FROM usuarios")->fetchAll(); Db::get()->createQuery("SELECT * FROM usuarios WHERE nombre = ?", array('Manuel')->fetchAll(); //QueryBuilder Db::get()->createQueryBuilder() ->select('*') ->from('usuarios', 'u') ->join('compras', 'c', 'c.usuarios_id = u.id') ->where('nombre = ?') ->setParameters(array('Manuel')) ->fetchAll();
Devolviendo Clases
<?php use Manuelj555\ORM\Db; class Usuario { const TABLE = 'user'; //opcional, por defecto la clase en small_case protected id; protected name; public function getId(){ return $this->id; } public function getName(){ return $this->name; } public function setName($name){ $this->name = $name; } } Db::get()->find('Usuario', 2); //busca en la tabla user por id = 2, devuelve una instancia de Usuario. $repository = Db::get()->getRepository('Usuario'); $repository->find(2); $repository->findBy(array('name' => 'Manuel')); Db::get()->getRepository('Usuario')->findAll(); $repository->findAll(array('name' => 'Manuel')); //Query Builder $repository->createQueryBuilder('u') ->where('u.name = :n') ->setParameter(':n' => 'Manuel') ->execute()->fetch();
Crear, Actualizar, Eliminar
<?php use Manuelj555\ORM\Db; class Usuario { const TABLE = 'user'; //opcional, por defecto la clase en small_case protected id; protected name; protected email; public function getId(){ return $this->id; } public function getName(){ return $this->name; } public function setName($name){ $this->name = $name; } public function getEmail(){ return $this-email; } public function setEmail($e){ $this->email = $e; } } $user = new Usuario(); $user->setName("Manuel"); $user->setEmail("manuel@test.com"); Db::get()->save($user); Db::get()->flush(); //las consultas no se ejecutan hasta hacer flush() o commit(); Db::get()->save($user); Db::get()->flush(); //No actualiza, porque no se cambió nada en el objeto. $user->setName("Manuel José"); Db::get()->save($user); //actualiza solo el name Db::get()->save($user); //no hace nada Db::get()->save($user); //no hace nada Db::get()->flush(); //Hace commit. $user = Db::get()->find('Usuario', 1); Db::get()->save($user); //no hace nada $user->setName("Manuel 2"); $user->setEmail("manuel@test.com"); Db::get()->save($user); //actualiza solo el name, porque el email no cambió. Db::get()->flush(); //Hace commit. Db::get()->remove($user); //elimina el usuario de la BD Db::get()->flush(); //Hace commit.