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

關聯定義

數據表的關聯 " /> 国产大片在线播放,免费看a级,国产精品自在线拍国产

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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'=>'liu21st@gmail.com',
'nickname'=>'流年',
) ,
)

關聯寫入
復制代碼 代碼如下:
$User = D( "User" );
$data = array();
$data["account"]="Thinkphp";
$data["password"]="123456";
$data["Profile"]=array(
'email'=>'liu21st@gmail.com',
'nickname' =>' 流年 ',
) ;
$result = $User->relation(true)->add($user);

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

關聯更新
復制代碼 代碼如下:
$User = D( "User" );
$data["account"]= "Thinkphp";
$data["password"]= "123456";
$data["Profile"]=array(
'email'=>'liu21st@gmail.com',
'nickname' =>' 流年 ',
) ;
$result =$User-> relation(true)->where(‘id=3')->save($data);

關聯刪除

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

php技術ThinkPHP關聯模型操作實例分析,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 日本免费久久久久久久网站 | 日韩中文字幕在线有码视频网 | 欧美一区二区三区激情啪啪 | 国产精品久久久久免费a∨ 国产精品久久久久免费视频 | 国产大片黄在线看免费 | 99pao在线视频成精品 | 亚洲图片欧美小说 | 在线观看免费污视频 | 国产视频三区 | 丁香激情六月天 | 97人人在线视频 | 成年美女黄网站色大片图片 | baoyu777永久免费视频 | 国产欧美一区二区三区在线看 | 亚洲五月综合网色九月色 | 韩国福利影视一区二区三区 | 久久婷婷激情综合色综合也去 | 日本一道本中文字幕 | 色七影院 | 四虎现在的网址入口 | 9l国产精品久久久久麻豆 | 免费一级特黄欧美大片勹久久网 | 国产aaa免费视频国产 | 日本青草 | www欧美在线观看 | 久久久久青草大香线综合精品 | 亚洲视频1 | 美女精品一区二区 | 免费看国产一级片 | 五月天婷婷影院 | 黄网在线观看网址入口 | 日韩精品一区二区三区视频网 | 国产伦精品一区二区三区视频小说 | 国产美女久久久 | 欧美日韩亚洲二区在线 | 伊人久久中文字幕 | 国产精品亚洲一区二区三区正片 | 五月激情站 | 91视频福利 | 亚洲成人看片 | 999re6热在线精品视频思思 |