Simple Examples

Simple Examples
     SQL schema
     Model
     Controller

This is a simple example of a single ORM model, that has no relationships, but uses validation on the fields.

SQL schema

CREATE TABLE IF NOT EXISTS `members` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(32) NOT NULL,
  `first_name` varchar(32) NOT NULL,
  `last_name` varchar(32) NOT NULL,
  `email` varchar(127) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Model

<?php

class Model_Member extends ORM
{
    public function rules()
    {
        return [
            'username' => [
                ['not_empty'],
                ['min_length', [':value', 4]],
                ['max_length', [':value', 32]],
                ['regex', [':value', '/^[-\pL\pN_.]++$/uD']],
            ],
            'first_name' => [
                ['not_empty'],
                ['min_length', [':value', 4]],
                ['max_length', [':value', 32]],
                ['regex', [':value', '/^[-\pL\pN_.]++$/uD']],
            ],
            'last_name' => [
                ['not_empty'],
                ['min_length', [':value', 4]],
                ['max_length', [':value', 32]],
                ['regex', [':value', '/^[-\pL\pN_.]++$/uD']],
            ],
            'email' => [
                ['not_empty'],
                ['min_length', [':value', 4]],
                ['max_length', [':value', 127]],
                ['email'],
            ],
        ];
    }
}

The array returned by ORM::rules() will be passed to a Validation object and tested when you call ORM::save().

Please notice that defining the primary key "id" in the model is not necessary. Also the table name in the database is plural and the model name is singular.

Controller

<?php

class Controller_Member extends Controller_Template
{
    public function action_index()
    {
        /**
         * Example 1
         */
        // Create an instance of a model
        $members = ORM::factory('Member');

        // Get all members with the first name "Peter" find_all()
        // means we get all records matching the query.
        $members->where('first_name', '=', 'Peter')->find_all();

        // Count records in the $members object
        $members->count_all();

        /**
         * Example 2
         */
        // Create an instance of a model
        $member = ORM::factory('Member');

        // Get a member with the user name "bongo" find() means
        // we only want the first record matching the query.
        $member->where('username', '=', 'bongo')->find();

        /**
         * Example 3
         */
        // Create an instance of a model
        $member = ORM::factory('Member');

        // Do an INSERT query
        $member->username = 'bongo';
        $member->first_name = 'Peter';
        $member->last_name = 'Smith';
        $member->save();

        /**
         * Example 4
         */
        // Create an instance of a model where the
        // table field "id" is "1"
        $member = ORM::factory('Member', 1);

        // Do an UPDATE query
        $member->username = 'bongo';
        $member->first_name = 'Peter';
        $member->last_name = 'Smith';
        $member->save();
    }
}

$member will be a PHP object where you can access the values from the query e.g. echo $member->first_name