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中關聯字段相同,可以使用該方法簡化鏈表操做app

相關文章
相關標籤/搜索