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