Orm - adampatterson/Dingo-Framework GitHub Wiki
Overview
The ORM library adds additional functionality to ORM classes. To load the ORM library manually you may do this:
load::library('orm');
Setup
First of all, if you haven't read Basic ORM
, do so now. As you know, a minimal ORM class may look something like this:
class contacts_orm
{
public $id;
public $first_name;
public $last_name;
}
In order to use the additional functionality that the ORM library provides, you must add some additional code.
class contacts_orm extends orm
{
public $connection = 'default';
public $table = 'contacts';
public $orm = FALSE;
public $id;
public $first_name;
public $last_name;
public function __construct()
{
parent::__construct();
}
}
The $connection
variable is optional and defines what database connection to use for queries. The $table
variable is required and defines what database table to run queries on. The $orm
variable is also optional and if set defines what ORM class to return results as. Note that a value for $orm
variable can be added manually later.
Now you are ready to start using ORM functionality!
###Query Methods There are three basic ways to use ORM classes. The first way is by returning the result of a regular query as an array of ORM classes:
$res = db('table','contacts')->all();
// Later...
$res[0]->delete();
The second method is to manually create an instance of an ORM class and then populate it with column data:
$o = load::orm('contacts');
$o->first_name = 'Evan';
$o->delete();
The third method is just like the second method, but you use regular query methods:
$o = load::orm('contacts');
$o-where('first_name','=','Evan');
$o->delete();
###Select
ORM queries are similar to regular queries in many ways. To quickly grab all rows from a table use the all()
method:
// Load ORM instance
$o = load::orm('contacts');
// Run query
$res = $o->all();
When you make queries the results are both returned and stored in the $results
variable:
$o = load::orm('contacts');
$o->all();
print_r($o->results);
You can add data to an ORM object to make simple select queries:
$o = load::orm('contacts');
$o->first_name = 'Evan';
$o->last_name = 'Byrne';
$res = $o->select();
More complex queries can be made using regular database methods:
$o = load::orm('contacts');
$o->where('id','=',123456);
$o->limit(1);
$res = $o->select();
Limit, offset, and pagination all work too:
$o = load::orm('contacts');
$o->paginate(1,10,$page);
$res = $o->select();
###Count
Get the total number of rows in a table using total()
:
$o = load::orm('contacts');
$count = $o->total();
You can create complex count queries just like you can with selects.
$o = load::orm('contacts');
$o->where('id','>',5);
$count = $o->count();
$o = load::orm('contacts');
$o->first_name = 'Evan';
$count = $o->count();
###Insert
Simply add column data to your object and run insert()
to insert a new row into a table.
$o = load::orm('contacts');
$o->first_name = 'Evan';
$o->last_name = 'Byrne';
$o->insert();
The object is then poplated with any additional information; such as the row ID.
echo $o->id;
###Update You can update rows of data from a previous query easily:
$res = db('table','contacts')->select('first_name','=','Evan');
// Later...
$res[0]->first_name = 'Joe';
$res[0]->update();
$o = load::orm('contacts');
$o->first_name = 'Evan';
$o->select();
// Later...
$o->first_name = 'Joe';
$o->update();
Create complex update queries just like you would otherwise:
$o = load::orm('contacts');
$o->where('first_name','=','Evan');
$o->first_name = 'Joe';
$o->update();
###Delete Delete queries work similarily to update queries:
$res = db('table','contacts')->select('first_name','=','Evan');
// Later...
$res[0]->delete();
$o = load::orm('contacts');
$o->first_name = 'Evan';
$o->delete();
$o = load::orm('contacts');
$o->first_name = 'Evan';
$o->select();
// Later...
$o->delete();
$o = load::orm('contacts');
$o->where('first_name','=','Evan');
$o->delete();