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