简单的示例
这是一个 单模型的 ORM 使用范例, 没有实用关系, 但是用了字段的验证.
数据表结构
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;
模型
<?php defined('SYSPATH') or die('No direct access allowed.');class Model_Member extends ORM {public function rules(){return array('username' => array(array('not_empty'),array('min_length', array(':value', 4)),array('max_length', array(':value', 32)),array('regex', array(':value', '/^[-\pL\pN_.]++$/uD')),),'first_name' => array(array('not_empty'),array('min_length', array(':value', 4)),array('max_length', array(':value', 32)),array('regex', array(':value', '/^[-\pL\pN_.]++$/uD')),),'last_name' => array(array('not_empty'),array('min_length', array(':value', 4)),array('max_length', array(':value', 32)),array('regex', array(':value', '/^[-\pL\pN_.]++$/uD')),),'email' => array(array('not_empty'),array('min_length', array(':value', 4)),array('max_length', array(':value', 127)),array('email'),),);}}
[!!] 当你使用 ORM::save() 时, 将触发 ORM::rules(),ORM::rules() 将一个数组结果 传递到一个 [Validation] 对象来对字段进行验证 .
[!!] 请注意 在模型中定义主键 id 并不是必须的。 并且 数据库中的表名 是 复数 和 模型的名称 是 奇异。
控制器
<?php defined('SYSPATH') or die('No direct access allowed.');class Controller_Member extends Controller_Template {public function action_index(){/*** 范例一*/// 创建一个 `member` 的模型接口$members = ORM::factory('member');// 获得所有 `first name` 是 "Peter" 的结果// find_all() 意思就是找到所有符合条件的结果。$members->where('first_name', '=', 'Peter')->find_all();// 获得 $members 对象中的 记录数量$members->count_all();/*** 范例二*/// 创建一个 `member` 的模型接口$member = ORM::factory('member');// 获得一个 `user name` 是 "bongo" 的 成员记录 find() 的意思是// 我们只获得第一个匹配的记录.$member->where('username', '=', 'bongo')->find();/*** 范例三*/// 创建一个 `member` 的模型接口$member = ORM::factory('member');// 执行 一个 `INSERT` 查询$member->username = 'bongo';$member->first_name = 'Peter';$member->last_name = 'Smith';$member->save();/*** 范例四*/// 创建一个 `member`表中的 "id" 列的值 等于 1 的模型接口$member = ORM::factory('member', 1);// 执行 更新 操作$member->username = 'bongo';$member->first_name = 'Peter';$member->last_name = 'Smith';$member->save();}}
[!!] 如果要访问 模型的列值 ,可以想访问 PHP 对象一样使用 $member->first_name 。
