激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - ThinkPHP關聯模型操作實例分析

ThinkPHP關聯模型操作實例分析

2020-01-12 17:51PHP教程網 PHP教程

ThinkPHP關聯模型操作實例分析,需要的朋友可以參考下

通常我們所說的關聯關系包括下面三種: 

◇ 一對一關聯 : ONE_TO_ONE , 包括 HAS_ONE 和 BELONGS_TO 
◇ 一對多關聯 : ONE_TO_MANY , 包括 HAS_MANY 和 BELONGS_TO 
◇ 多對多關聯 : MANY_TO_MANY 

關聯定義 

數據表的關聯 CURD 操作,目前支持的關聯關系包括下面四種:HAS_ONE 、 BELONGS_TO 、 HAS_MANY 、 MANY_TO_MANY 。 

一個模型根據業務模型的復雜程度可以同時定義多個關聯,不受限制,所有的關聯定義都統一在模型類的 $_link 成員變量里面定義,并且可以支持動態定義。要支持關聯操作,模型類必須繼承 RelationModel 類,關聯定義的格式是: 

復制代碼代碼如下:


protected $_link = array( 
' 關聯 1' => array( 
' 關聯屬性 1' => ' 定義 ', 
' 關聯屬性 N' => ' 定義 ', 
), 
' 關聯 2' => array( 
' 關聯屬性 1' => ' 定義 ', 
' 關聯屬性 N' => ' 定義 ', 
), 
... 
); 


HAS_ONE 關聯方式的定義: 

復制代碼代碼如下:


class UserModel extends RelationModel 

public $_link = array( 
'Profile'=> array( 
'mapping_type' =>HAS_ONE, 
'class_name'=>'Profile', 
// 定義更多的關聯屬性 
…… 
) , 
); 


mapping_type 關聯類型,這個在 HAS_ONE 關聯里面必須使用 HAS_ONE 常量定義。 
class_name 要關聯的模型類名 
mapping_name 關聯的映射名稱,用于獲取數據用 
foreign_key 關聯的外鍵名稱 
condition 關聯條件 
mapping_fields 關聯要查詢的字段 
as_fields 直接把關聯的字段值映射成數據對象中的某個字段 

BELONGS_TO 關聯方式的定義: 

復制代碼代碼如下:


'Dept'=> array( 
'mapping_type'=>BELONGS_TO, 
'class_name'=>'Dept', 
'foreign_key'=>'userId', 
'mapping_name'=>'dept', 
// 定義更多的關聯屬性 
…… 
) , 


class_name 要關聯的模型類名 
mapping_name 關聯的映射名稱,用于獲取數據用 
foreign_key 關聯的外鍵名稱 
mapping_fields 關聯要查詢的字段 
condition 關聯條件 
parent_key 自引用關聯的關聯字段 
as_fields 直接把關聯的字段值映射成數據對象中的某個字段 

HAS_MANY 關聯方式的定義: 

復制代碼代碼如下:


'Article'=> array( 
'mapping_type' =>HAS_MANY, 
'class_name'=>'Article', 
'foreign_key'=>'userId', 
'mapping_name'=>'articles', 
'mapping_order'=>'create_time desc', 
// 定義更多的關聯屬性 
…… 
) , 


class_name 要關聯的模型類名 
mapping_name 關聯的映射名稱,用于獲取數據用 
foreign_key 關聯的外鍵名稱 
parent_key 自引用關聯的關聯字段 
condition 關聯條件 
mapping_fields 關聯要查詢的字段 
mapping_limit 關聯要返回的記錄數目 
mapping_order 關聯查詢的排序 

MANY_TO_MANY 關聯方式的定義: 

復制代碼代碼如下:


"Group"=>array( 
'mapping_type'=>MANY_TO_MANY, 
'class_name'=>'Group', 
'mapping_name'=>'groups', 
'foreign_key'=>'userId', 
'relation_foreign_key'=>'goupId', 
'relation_table'=>'think_gourpUser' 


class_name 要關聯的模型類名 
mapping_name 關聯的映射名稱,用于獲取數據用 
foreign_key 關聯的外鍵名稱 
relation_foreign_key 關聯表的外鍵名稱 
mapping_limit 關聯要返回的記錄數目 
mapping_order 關聯查詢的排序 
relation_table 多對多的中間關聯表名稱 

關聯查詢 

使用 relation 方法進行關聯操作, relation 方法不但可以啟用關聯還可以控制局部關聯操作,實現了關聯操作一切盡在掌握之中。 

$User = D( "User" ); 
$user = $User->realtion(true)->find(1); 

輸出 $user 結果可能是類似于下面的數據: 

復制代碼代碼如下:


array( 
'id'=>1, 
'account'=>'ThinkPHP', 
'password'=>'123456', 
'Profile'=> array( 
'email'=>'[email protected]', 
'nickname'=>'流年', 
) , 


關聯寫入 

復制代碼代碼如下:


$User = D( "User" ); 
$data = array(); 
$data["account"]="ThinkPHP"; 
$data["password"]="123456"; 
$data["Profile"]=array( 
'email'=>'[email protected]', 
'nickname' =>' 流年 ', 
) ; 
$result = $User->relation(true)->add($user); 


這樣就會自動寫入關聯的 Profile 數據。 

關聯更新 

復制代碼代碼如下:


$User = D( "User" ); 
$data["account"]= "ThinkPHP"; 
$data["password"]= "123456"; 
$data["Profile"]=array( 
'email'=>'[email protected]', 
'nickname' =>' 流年 ', 
) ; 
$result =$User-> relation(true)->where(‘id=3')->save($data); 


關聯刪除 

$result =$User->relation(true)->delete( "3" ); 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久色网站 | 欧美一级黄色网 | 欧美视频一区二区三区在线观看 | 99国产精品欲a | 国产激情精品一区二区三区 | 国产精品成人免费一区久久羞羞 | 欧美一级爱操视频 | 高清在线国产 | 高潮娇喘嗯啊~文字 | 欧美一a一片一级一片 | 性欧美xxxx精品xxxxrb | 国产精品性夜天天视频 | 欧美一区公司 | 久久国产免费视频 | 九九热这里只有精品8 | 精品国产一区二区久久 | 亚洲午夜精选 | 久久精品成人免费国产片桃视频 | 中文国产在线视频 | 广州毛片 | 免费一级片观看 | 日本免费一区二区三区四区 | 91精品成人福利在线播放 | 日本在线精品视频 | 亚洲影院在线 | a视频在线播放 | 神马久久精品综合 | 久久久久久久久久久久久久久久久久 | asian裸体佳人pics | 久久久久久久久浪潮精品 | 精品国产一区二 | 精品一区二区三区免费视频 | 黄色片网站免费 | 国产小视频在线 | 欧美 国产 综合 | 日韩字幕在线观看 | 免费看综艺策驰影院 | 精品亚洲综合 | 久草在线资源福利站 | 国产免费久久久久 | 亚洲精品在线观看网站 |