KOHANA3.3 ORM中文详解

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中关联字段相同,可使用该方法简化链表操作

KOHANA3.3 ORM中文详解

时间: 2024-12-30 03:05:36

KOHANA3.3 ORM中文详解的相关文章

Nginx配置文件nginx.conf中文详解(转)

######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /usr/local/nginx/logs/error.log info; #进程pid文件 pid /usr/local/nginx

ionic中文详解CSS组件

ionic组件 本来不想写这个的,因为毕竟官网已经列的很详细了css component,国内的网络由于种种原因,有时候右边并不会显示一个手机框用于展示效果.我这里将一些相关组件的介绍合在一起,给出综合例子和显示效果,方便自己查阅.另外官网的JS API介绍文档有问题,国内访问不能跳转,请参考我的另一篇ionic中文javascript API. 教程索引:(持续更新中...)ionic中文教程 转载请注明出处:http://www.haomou.net/2014/08/09/2014_ioni

Nginx中文详解、配置部署及高并发优化

  一.Nginx常用命令: 1. 启动 Nginx          /usr/local/nginx/sbin/nginx [email protected]:sudo ./sbin/nginx 2. 停止 Nginx [email protected]:sudo ./sbin/nginx -s stop[email protected]:sudo ./sbin/nginx -s quit -s都是采用向 Nginx 发送信号的方式.3. Nginx 重载配置 [email protecte

flot中文详解

flot中文详解 调用plot函数的方法如下: 1 var plot = $.plot(placeholder, data, options) Data的结构: data应该是data series的一个数组: [ series1, series2, ... ] 一个series可以是原始数据或者是拥有属性的对象.原始数据是一个二维数组: [ [x1, y1], [x2, y2], ... ] 为了简化flot内容的逻辑关系,x轴和y轴的数值都要使用数字(当然,如果有特殊需要的话,flot也可以

Nginx主配置文件nginx.conf中文详解

第1章 nginx配置解释图解 第2章 Nginx核心配置文件nginx.conf史上最细中文详解 2.1 定义Nginx运行的用户和用户组 2.2 nginxworker进程数,即处理请求的进程(熟称负责接客的服务员) 2.3 cpu亲和力配置,让不同的进程使用不同的cpu 2.4 全局错误日志定义类型,[ debug|info|notice|warn|error|crit] 2.5 把进程号记录到文件 2.6 Nginx worker最大打开文件数,可设置为系统优化后的ulimit -HSn

Nginx配置文件nginx.conf中文详解(转载)

请参考:http://wiki.nginx.org/Main #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log ar/loginx/error.log info; #进程文件 pid ar/runinx.pid; #一个nginx进程打开的最多文件描述符

mysql数据库my.ini配置文件中文详解

mysql数据库my.ini配置文件中文详解 mysqld程序–目录和文件 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的目录. datadir = path 从给定目录读取数据库文件. pid-file = filename 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); Init-V脚本需要使用这个文件里的进程ID结束mysqld进程. socket = filen

Nginx 配置文件nginx.conf中文详解

1 ######Nginx配置文件nginx.conf中文详解##### 2 3 #定义Nginx运行的用户和用户组 4 user www www; 5 6 #nginx进程数,建议设置为等于CPU总核心数. 7 worker_processes 8; 8 9 #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] 10 error_log /usr/local/nginx/logs/error.log info; 11 12 #进

php.ini_中文详解

;;;;;;;;;;;;;;;;; ;; 关于php.ini ;; ;;;;;;;;;;;;;;;;; ; 这个文件必须命名为'php.ini'并放置在httpd.conf中PHPINIDir指令指定的目录中. ; 最新版本的php.ini可以在下面两个位置查看: ; http://cvs.php.net/viewvc.cgi/php-src/php.ini-recommended?view=co ; http://cvs.php.net/viewvc.cgi/php-src/php.ini-d