文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Kohana 之ORM实际使用篇

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,上面尝试运行后给我的效果不佳~

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载