Granada / Paris Cheatsheet

Example

$results = \ModelName::where("type",$type)
    ->where("status",$status)
    ->whereNotIn("category", [1,2,3] )
    ->order_by_desc("id")
    ->find_one();

Find one

$job = \Model::factory("JobTable")->where("job_id",$jobid)->find_one();

Create

$ois = \Model::factory('Order')->create();
$ois->order_id = $item->order_id;
$ois->supplier_id = $item->supplier_id;
$ois->created_at = date("Y-m-d H:i:s");
$ois->save();

Model query

->select_many(array('first_name' => 'name'), 'age', 'height')
->select_many('column', 'column2', 'column3')
->select('name')
->select_expr('COUNT(*)', 'count')
->min('height')
->max('height')
->avg('height')

->join('person', array('p1.parent', '=', 'p2.id'), 'p2')

->where('name', 'Fred')
->where_equal('name','Fred')
->where_not_equal($column_name, $value)
->where_id_is($id)
->where_like($column_name, $value)
->where_not_like($column_name, $value) 
->where_gt($column_name, $value) // WHERE ... >
->where_lt($column_name, $value) // WHERE ... <
->where_gte('age', 20) //WHERE ... >=
->where_lte($column_name, $value) //  WHERE ... <=
->where_in($column_name, $values)
->where_not_in($column_name, $values)
->where_null($column_name)
->where_not_null($column_name)
->where_raw($clause, $parameters=array()) // >where_raw('(`age` = ? OR `age` = ?)', array(20, 25))
>where_any_is(array( // WHERE ... OR ...
            array('name' => 'Joe', 'age' => 10),
            array('name' => 'Fred', 'age' => 20)))

->order_by_desc('age')
->order_by_asc('age')
->order_by_expr('age desc') // order_by_expr('SOUNDEX(`name`)')->find_many()

->group_by('age')
->group_by_expr($expr)

->having('age',15)
->having_equal($column_name, $value)
->having_not_equal($column_name, $value)
->having_id_is($id)
->having_like($column_name, $value) 
->having_not_like($column_name, $value)
->having_gt($column_name, $value) 
->having_lt($column_name, $value)
->having_gte($column_name, $value)
->having_lte($column_name, $value) 
->having_in($column_name, $values)
->having_not_in($column_name, $values)
->having_null($column_name) 
->having_not_null($column_name)
->having_raw($clause, $parameters=array())

->limit($limit)
->offset($offset) 

->find_one()
->find_many()
->find_array()
->count()

Raw queries

->raw_query('SELECT p.* FROM person p JOIN role r ON p.role_id = r.id WHERE r.name = :role', array('role' => 'janitor'))->find_many();

official docs

Filter

<?php
class User extends Model {
        public static function has_role($orm, $role) {
                return $orm->where('role', $role);
        }
}

$admin_users = Model::factory('User')->filter('has_role', 'admin')->find_many();
$guest_users = Model::factory('User')->filter('has_role', 'guest')->find_many();

Get a model from a raw query

Don't do this:

$posts = ORM::for_table('posts')->raw_query($sql)->find_many();

Do this:

$posts = Model::factory('App\Models\Post')->raw_query($sql)->find_many();

Get the PDO connection

ORM::get_db()

 Logging

ORM::configure('logging', true);
$fullQueryLog = ORM::get_query_log();

Links