KOHANA3.3 ORM中文詳解

來源:互聯網
上載者:User

標籤:style   color   使用   os   資料   io   

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中關聯欄位相同,可使用該方法簡化鏈表操作


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.