Kohana 之ORM实际使用篇
时间:2010-08-23 来源:liushan
上面已经介绍使用了,这里在写个DOME吧,但不可能涉及全部方法使用
就接上面那个例子吧,先把mytest表清掉:
1.创建ORM模块
<?php defined('SYSPATH') or die('No direct access allowed.'); class Model_Mytest extends ORM { protected $_ignored_columns = array('c');//排除字段 protected $_table_name="mytests";//ORM表,不受下面的表名复数影响 protected $_db="default";//默认数据库连接 protected $_primary_key="id";//主键字段 protected $_primary_val="name";//主键值 protected $_table_names_plural=true;//表名复数 protected $_sorting=array("a"=>"desc");//排序 protected $_foreign_key_suffix="_id";//外键连接符 protected $_updated_column = array("column"=>"dt","format"=>"Y-m-d H:i:s"); protected $_created_column = array("column"=>"ct","format"=>"Y-m-d H:i:s"); protected $_rules = array( 'a' => array( 'not_empty' => NULL, 'min_length' => array(2), 'max_length' => array(255), ), 'b' => array( 'max_length' => array(10), ), ); protected $_callbacks = array( 'b' => array('visb'),); public function visb(Validate $data, $field){ return $data->alpha($field); } }
2取得并使用:
<?php //建立一个新数据,并保存 $orm=ORM::factory("mytest"); $orm->a="a"; $orm->b="a1"; $orm->c="不存在这个字段"; if(!$orm->check()){ echo "no check"; } $orm->a="a1"; $orm->save();//保存并使用当前记录 if($orm->saved()) echo "save succ\n"; print_r($orm->as_array());//可以返回当前的插入 //更新记录 $orm->a="a2";//更新a为 aaa $orm->save(); if($orm->saved()) echo "save succ\n"; $orm1=ORM::factory("mytest"); $orm1->a="b1"; $orm1->b="b1"; $orm1->save();//到这里有两条记录咯 print_r($orm1->as_array());//可以返回当前的插入 $orm1->a="alla"; $orm1->save_all();//把全部a变为了alla $allobj=$orm1->find_all();//取得全部ORM记录 foreach ($allobj as $v){ print_r($v->as_array());//打印出来可以看见全部变为alla咯 } //取得记录并更新 $orm2=ORM::factory("mytest",array("b"=>"b1")); if($orm2->loaded()){ print_r($orm2->as_array());//可以看见取得第二条记录 $orm2->b="b2"; $orm2->save(); print_r($orm2->as_array());//可以看见第二条记录已经被修改 if($orm2->saved()){ echo "svae succ\n"; } $orm2->values(array("a"=>"a3","b"=>"b3")); sleep(3);//为了看自动更新时间有效果没有~ $orm2->save(); print_r($orm2->as_array());//第二条记录再次被修改,可以看见ct dt 相差3秒 if($orm2->saved()){ echo "save succ \n"; } }else echo "load fail\n"; //搜索记录 $orm3=ORM::factory("mytest"); $orm3->where("a","=","alla")->find(); if($orm3->loaded()){ echo "load succ\n-"; } print_r($orm3->as_array());//可以看见取得第一条记录 echo $orm3->count_all();//查看下有几条记录了(2) echo $orm3->pk();//在看下当前的ID是多来 print_r($orm3->list_columns());//随便看下表结构吧. $orm3->delete();//把这个记录删了吧 $orm3->delete_all();//数据没用了,全清掉吧 echo $orm3->last_query();//看下怎么清数据的
未能完整演示所有的功能,遗漏的有:关系,校验~
不打算使用ORM,上面尝试运行后给我的效果不佳~
相关阅读 更多 +