think php 关联模型,ThinkPHP 关联模型使用图解
通常我們所說的關聯關系包括下面三種:
☆ 一對一關聯:ONE_TO_ONE,包括HAS_ONE和BELONGS_TO
☆ 一對多關聯:ONE_TO_MANY,包括HAS_MANY和BELONGS_TO
☆ 多對多關聯:MANY_TO_MANY
關聯關系必然有一個參照表,例如:
有一個用戶注冊表xp_user和一個用戶信息表xp_info
xp_user有用戶的賬號、密碼
xp_info記錄用戶的基本信息 有標題、信息
一、我們首先來說說HAS_ONE關聯
首先要建立一個UserModel模型
UserModel模型:
<?phpclassUserModelextendsRelationModel {//這地方要繼承RelationModelprotected$_link=array(//所有的關聯定義都統一記錄在模型類的$_link里面'Info'=>array(//關聯的表名'mapping_type'=>HAS_ONE,//關聯類型'class_mame'=>'Info',//需要關聯的模型類名'mapping_name'=>'Info',//關聯的映射名稱,用于獲取數據用'foreign_key'=>'uid',//關聯的外鍵名稱//'mapping_fields'=>'uid,title,info', //關聯要查詢的字段'as_fields'=>'uid,title,info:message',//直接把關聯的字段值映射成數據對象中的某個字段),);}?>
UserAction控制器:
<?phpclassUserActionextendsAction {publicfunctionindex(){$user=D('User');$list=$user->relation(true)->find();//由于性能問題,新版本取消了自動關聯查詢機制,而統一使用relation方法進行關聯操作dump($list);}}?>
輸入結果如下:
二、一對多關聯HAS_MANY
user表仍是一條數據
info表增加一條數據
UserModel模型:
<?phpclassUserModelextendsRelationModel {//這地方要繼承RelationModelprotected$_link=array(//所有的關聯定義都統一記錄在模型類的$_link里面'Info'=>array(//關聯的表名'mapping_type'=>HAS_MANY,//關聯類型 一對多關聯'class_mame'=>'Info',//需要關聯的模型類名'mapping_name'=>'Info',//關聯的映射名稱,用于獲取數據用'foreign_key'=>'uid',//關聯的外鍵名稱//'mapping_fields'=>'uid,title,info', //關聯要查詢的字段'as_fields'=>'uid,title,info:message',//直接把關聯的字段值映射成數據對象中的某個字段//一對多關聯這地方增加了幾個參數//mapping_limit 關聯要返回的記錄條數//mapping_order 關聯查詢的順序),);}?>
UserAction控制器:
<?phpclassUserActionextendsAction {publicfunctionindex(){$user=D('User');$list=$user->relation(true)->select();dump($list);}}?>
輸出結果:
一對一和一對多 基本一樣、只要會一對一 一對多很容易
三、關聯操作 CURD
1.以一對多模型為例,向數據庫插入數據
UserAction.class.php
'title111111','info'=>'info11111111'),//這里的info是字段array('title'=>'title222222222','info'=>'info222222222'),
);$user->relation(true)->add($data);
}
}?>
運行結果:
2.修改這條數據
UserAction.class.php
<?phpclassUserActionextendsAction {publicfunctionindex(){$user=D('User');$data['username']='demo';$data['userpwd']='mima';$data['Info']=array(array('id'=>'5','title'=>'demo111111','info'=>'demo111111'),//這地方跟add不同 需要加修改的IDarray('id'=>'6','title'=>'demo2222222','info'=>'demo2222222'),);$user->relation(true)->where('id=16')->save($data);}}?>
運行結果:
3.刪除這條數據
<?phpclassUserActionextendsAction {publicfunctionindex(){$user=D('User');$user->relation(true)->delete(16);}}?>
運行結果:
好了,關聯操作到此結束
總結
以上是生活随笔為你收集整理的think php 关联模型,ThinkPHP 关联模型使用图解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab复数方程组,【求解】matl
- 下一篇: oracle执行减法,oracle时间的