lazy / db
ORM for PHP >= 5.3.0
dev-master
2014-03-16 06:23 UTC
Requires
- doctrine/inflector: 1.0.*@dev
This package is not auto-updated.
Last update: 2024-12-18 02:42:52 UTC
README
THIS PROJECT DOESN'T MAINTAIN ANYMORE
I'M RECOMMEND TO USE LAZY FRAMEWORK INSTEAD.
#Lazy/Db is an Object Relational Mapper written in PHP
###Release information THIS RELEASE IS A DEVELOPMENT RELEASE AND NOT INTENDED FOR PRODUCTION USE. PLEASE USE AT YOUR OWN RISK
###Features
- Comprehensive ORM layer for mapping records to PHP objects
- Eager loading associations
- Dirty tracking
- Lazy load support
- Solving N+1 problem
###Getting Start ####1. Setup connection
<?php use Lazy\Db\Connection; Connection::setEnv(Connection::ENV_DEVELOPMENT); Connection::setDefaultConfig(array( 'development' => array( 'dsn' => 'mysql:host=localhost;dbname=lazy_db_test', 'username' => 'root' ) ));
###2. Define models
<?php use Lazy\Db\AbstractModel; class User extends AbstractModel { protected static $columns = [ 'id' => 'int', 'name' => 'varchar', 'username' => 'varchar', 'password' => 'varchar', 'activated' => 'tinyint' ], protected static $oneToMany = ['Posts']; } class Post extends AbstractModel { protected static $columns = [ 'id' => 'int', 'user_id' => 'int', 'name' => 'varchar', 'content' => 'text', 'created_time' => 'datetime', 'modified_time' => 'timestamp', ], protected static $manyToOne = ['User']; }
###3. Interact with models
# find one by primary key value $user = User::first(1); echo $user->name; foreach ($user->Posts as $post) { echo $post->name; } # find all $users = User::all(['activated' => 1])->limit(3); foreach ($users as $user) { echo $user->name; foreach ($user->Posts as $post) { echo $post->name; } } // in this case, it just execute 2 queries # SELECT id, name, username, password, activated FROM users WHERE (activated = 1) LIMIT 3; # SELECT id, user_id, name, created_time, modified_time FROM posts WHERE (user_id IN(1, 2, 3));