zoukankan      html  css  js  c++  java
  • KOHANA3.3 ORM中文详解

     kohana 3.3.0

    ORM
    ===
    校验:
    1.ORM内部为强制校验
    2.ORM外部校验 (保存,更新,插入时校验)
    过滤:
    校验不在包含过滤功能
    参数及方法变更:
    1.find不在带参数
    2.save拆分为create跟update,并增加校验类参数,规则为覆盖叠加
    3.factory为ORM重写,可传两参数,用MODEL只有一个参数
    4.find等查找不可用于已有实体的ORM
    5.校验过滤规则的转变
    6.unique指定字段的唯一判断函数
    融合数据库操作:
    数据库的CURD操作增加方法,方便使用.

    方法及说明:
    A:ORM自动维护
        字段缓存
            $_column_cache
        初始化缓存配置
            $_init_cache
        必要校验模型
            $_validation
        当前操作实体
            $_object
        是否有更改
            $_changed
        原数据(从数据库获取,并未更改的数据)
            $_original_values
        自动加载的关系ORM
            $_related
        是否通过内置必要校验
            $_valid
        是否加载实体成功
            $_loaded
        是否保存成功
            $_saved
        排序用存放字段
            $_sorting
        当前对象名
            $_object_name
        复写辅助对象
            $_object_plural
        表字段
            $_table_columns
        当前KEY中的值
            $_primary_key_value
        以下为映射到数据库操作相关属性:
            $_db_applied
            $_db_pending
            $_db_reset
            $_db_builder
            $_cast_data
        自动加载ORM缓存字段
            $_with_applied
        当前orm名
            $_errors_filename
    B:配置值
        数据库配置 (一般用于多库情况)
            $_db_group
        数据库对象 (一般不需要手动维护)
            $_db
        数据缓存恢复的时候是否从数据库中重新获取
            $_reload_on_wakeup
        是否使用表名的自动复数
            $_table_names_plural
        表中对应的KEY
            $_primary_key
        ORM对应表
            $_table_name
        关联KEY字段
            $_foreign_key_suffix
        自动序列化的字段
            $_serialize_columns
        更改时自动更新字段
            $_updated_column
        创建时自动插入字段
            $_created_column
        ORM关系:
            本ORM是别ORM的附属ORM b 表示该ORM对外用的属性值, model 对应主的ORM名,
            foreign_key 自身的用来存主表ORM名主键的字段名
                $_belongs_to
                    例:$this->_belongs_to=array('b'=>array('model'=>'','foreign_key'=>''));
            本ORM是有附属ORM b 表示ORM属性名, model 对应的附属ORM,
            foreign_key 附属表的存主ORM key的字段,并且是一对一关系
                $_has_one
                    例:$this->_has_one =array('b'=>array('model'=>'','foreign_key'=>''));
            本ORM是有附属ORM b 表示ORM属性名, model 对应的附属ORM,
            foreign_key 附属表的存主ORM key的字段,是一对多关系 OR
            本ORM是有附属ORM且通过第3方表链接  ORM对外用的属性值 ,model 对应的附属ORM  ,
            foreign_key 关系表存主ORMKEY的字段,through 关系表名 far_key 附属表存关系表KEY的字段名
                $_has_many
                    例:$this->_has_many=array('orm'=>array('model'=>'','foreign_key'=>''));
                    例:$this->_has_many=array('orm'=>array('model'=>'','foreign_key'=>'','through'=>'','far_key'=>''));

      //---------------------------------------------------------------------

      1. 本身存对方主键
        _belongs_to['访问键']=array(
            "model"=>"对方模型名",
            "far_primary_key"=>"对方主键字段名",
            "foreign_key"=>"本身存对方键的字段名",
        );
    2. 对方有字段存本身主键
        _has_one['访问键']=array(
            "model"=>"对方模型名",
            "primary_key"=>"本身主键字段名",
            "foreign_key"=>"对方存本身主键的字段名"
        )
    3. 对方存本身主键 ,但对方有多条记录
        1. 不通过关系表
        _has_many['访问键']=array(
            "model"=>"对方模型名",
            "foreign_key"=>"对方存本身主键的字段名",
            "primary_key"=>"本身主键字段名",
        )
        2. 通过关系表
        _has_many['访问键']=array(
            "model"=>"对方模型名",
            "through"=>"关系表名",
            "far_key"=>"关系表存对方主键的字段名",
            "foreign_key"=>"关系表存本身主键的字段名",
            "primary_key"=>"本身主键字段名",
            "far_primary_key"=>"对方主键字段名"
        )

      //---------------------------------------------------------------------
        自动加载ORM,当查询时自动加载关联的ORM
        支持跨ORM加载语法为ORM1:ORM2
            $_load_with
                例:$this->_load_with=array("user:tags"); 通过user在得到user tags
        ORM必要校验规则,返回为数组,详情查看校验类说明
            rules()
        数据过滤规则,返回为数组,规则跟校验相同
        参数为:
            filters()
        字段可读字符转化,返回数组,一维字段列表
            labels()
        
    C:可用方法 (说明:参数说明)
        得到一个ORM:ORM名,条件
            factory($model, $id = NULL)
        得到一个ORM:条件
            __construct($id = NULL)
        重新加载表字段
            reload_columns($force = FALSE)
        清空一个ORM
            clear()
        重新加载数据
            reload()
        得到ORM KEY
            __toString()
        序列化ORM
            serialize()
        反序列化ORM:ORM序列化字符
            unserialize($data)
        判断字段是否有更改:指定字段
            changed($field = NULL)
        取得一个字段:字段名
            get($column)
        设置一个字段:字段名,字段值
            set($column, $value)
        设置一批字段:字段关系数组,需要的字段(默认为表字段)
            values(array $values, array $expected = NULL)
        转化为数组
            as_array()
        快捷取跨关系ORM:ORM关系路径(orm1:orm2)
            with($target_path)
        获取一个ORM
            find()
        获取一批ORM
            find_all()
        数据过滤规则:过滤字段,过滤的函数名,规则跟RULE一样
            run_filter($field, $value)
        检查数据是否符合规则,抛ORM校验异常:校验类(覆盖叠加)
            check(Validation $extra_validation = NULL)
        创建一个ORM,抛ORM校验异常:校验类(覆盖叠加)
            create(Validation $validation = NULL)
        修改一个ORM,抛ORM校验异常:校验类(覆盖叠加)
            update(Validation $validation = NULL)
        修改或创建一个ORM,抛ORM校验异常:校验类(覆盖叠加)
            save(Validation $validation = NULL)
        删除一个ORM,需有ORM实体
            delete()
        判断是否存在ORM关系:ORM名,关联字段(默认为ORM配置)
            has($alias, $far_keys = NULL)
        判断是否存在ORM关系(全部关系扫描):ORM名,关联字段(默认为ORM配置)
            has_any($alias, $far_keys = NULL)
        汇总关系数量:orm名,关联字段(默认为ORM配置)
            count_relations($alias, $far_keys = NULL)
        添加一个关系,存在抛数据库异常:orm名,关联字段(默认为ORM配置)
            add($alias, $far_keys)
        移除一个关系:orm名,关联字段(默认为ORM配置)
            remove($alias, $far_keys = NULL)
        查询总数
            count_all()
        获得字段列表
            list_columns()
        得到KEY
            pk()
        最后一个请求的SQL
            last_query()
        查询指定字段是否存在指定值(用于唯一判断):字段名,值
            unique($field, $value)
        获取属性或配置的方法
            object_name()
            object_plural()
            loaded()
            saved()
            primary_key()
            table_name()
            table_columns()
            has_one()
            belongs_to()
            has_many()
            load_with()
            original_values()
            created_column()
            updated_column()
            validation()
            object()
            errors_filename()
            rules()
            filters()
            labels()
        数据库操作映射
            where($column, $op, $value)
            and_where($column, $op, $value)
            or_where($column, $op, $value)
            where_open()
            and_where_open()
            or_where_open()
            where_close()
            and_where_close()
            or_where_close()
            order_by($column, $direction = NULL)
            limit($number)
            distinct($value)
            select($columns = NULL)
            from($tables)
            join($table, $type = NULL)
            on($c1, $op, $c2)
            group_by($columns)
            having($column, $op, $value = NULL)
            and_having($column, $op, $value = NULL)
            or_having($column, $op, $value = NULL)
            having_open()
            and_having_open()
            or_having_open()
            having_close()
            and_having_close()
            or_having_close()
            offset($number)
            cached($lifetime = NULL)
            param($param, $value)
                数据绑定,即查询SQL中的一些字符替换
            using($columns)
                如果两个ORM中关联字段相同,可使用该方法简化链表操作

  • 相关阅读:
    记录一下我的2017年阅读书单
    大型网站技术架构(二)--大型网站架构演化
    《大型网站技术架构:核心原理与案例分析》读书笔记系列
    过年了,别忘记给家人的礼物
    2017总结
    MyBatis + MySQL返回插入成功后的主键id
    微信公众号问题:{"errcode":40125,"errmsg":"invalid appsecret, view more at http://t.cn/LOEdzVq, hints: [ req_id: kL8J90219sg58 ]"}
    git删除本地分支
    Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十二)Spring集成Redis缓存
    Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十一)redis密码设置、安全设置
  • 原文地址:https://www.cnblogs.com/liushannet/p/2784146.html
Copyright © 2011-2022 走看看