FleaPHP 開發指南 7 資料表關聯

2021-04-12 11:45:36 字數 2654 閱讀 9892

資料表關聯是指兩個或者多個資料表的記錄之間的邏輯關係。

例如:

目前,fleaphp 支援四種型別的資料表關聯,分別是:

在 fleaphp 中,可以為每乙個表資料入口定義多個不同的關聯,例如:

<?php

load_class('flea_db_tabledatagateway');

class model_productclass extends flea_db_tabledatagateway

?>

在詳細介紹這四種關聯之前,先了解一些後文將會用到的術語。

理解這幾個術語後,我們再來看每一種關聯的詳細解釋。

has_one 是一種非常簡單的關聯關係。表示乙個記錄擁有另乙個記錄。這兩個記錄分別位於兩個資料表中。

由於每乙個使用者(一條 users 表中的記錄)都有乙份對應的個人資訊(一條 profiles 表中的記錄)。因此,我們就可以為 users 表定義乙個 has_one 關聯。

很明顯,users 表的記錄擁有一條 profiles 表的記錄。因此,當 users 表中的一條記錄被刪除時,被刪除記錄所擁有的 profiles 表中的關聯記錄也會被自動刪除。

在 has_one 關聯中,要求外來鍵放置在關聯表中。

上述例子的表定義簡化版如下:

users 表:

profiles 表:

對應的 mysql **如下:

create

table

`users` (

`user_id`

intnot

null auto_increment ,

`username`

varchar( 32 ) not

null ,

primary

key ( `user_id` )

);create

table

`profiles` (

`profile_id`

intnot

null auto_increment ,

`address`

varchar( 128 ) not

null ,

`postcode`

varchar( 8 ) not

null ,

`user_id`

intnot

null ,

primary

key ( `profile_id` )

);

對應的 flea_db_tabledatagateway 繼承類的定義如下:

<?php

load_class('flea_db_tabledatagateway');

class users extends flea_db_tabledatagateway

class profiles extends flea_db_tabledatagateway

?>

<?php

// 首先插入一條 users 記錄

$modelusers =& new users();

$newuserid = $modelusers->create(

array('username' => 'dualface')

);// 接下來,再插入一條 profiles 記錄

$modelprofiles =& new profiles();

$modelprofiles->create(

array(

'address' => 'sichuan zigong',

'postcode' => '643000',

'user_id' => $newuserid

));// ok,我們現在嘗試讀取一條 users 記錄,看看會得到什麼結果

$user = $modelusers->find($newuserid);

dump($user);

?>

結果很有趣,多出來的 『profile』 字段正好是我們剛剛插入 profiles 表的記錄內容:

array

( [user_id] => 1

[username] => dualface

[ref___id] => 1

[profile] => array

([profile_id] => 1

[address] => sichuan zigong

[postcode] => 643000

[user_id] => 1

[ref___id] => 1

))

在上面的例子中,users類中有乙個 $hasone 成員變數。該變數為乙個陣列:

var

$hasone = array(

'tableclass' => 'profiles',

'foreignkey' => 'user_id',

);

$hasone 成員變數用於為乙個表資料庫入口指定 has_one 關聯。

未完待續。。。。

FleaPHP 開發指南 7 資料表關聯

資料表關聯是指兩個或者多個資料表的記錄之間的邏輯關係。例如 目前,fleaphp 支援四種型別的資料表關聯,分別是 在 fleaphp 中,可以為每乙個表資料入口定義多個不同的關聯,例如 load class flea db tabledatagateway class model productc...

FleaPHP 開發指南 7 資料表關聯

資料表關聯是指兩個或者多個資料表的記錄之間的邏輯關係。例如 目前,fleaphp 支援四種型別的資料表關聯,分別是 在 fleaphp 中,可以為每乙個表資料入口定義多個不同的關聯,例如 首先插入一條 users 記錄 modelusers new users newuserid modeluser...

FleaPHP 開發指南 7 資料表關聯

資料表關聯是指兩個或者多個資料表的記錄之間的邏輯關係。例如 目前,fleaphp 支援四種型別的資料表關聯,分別是 在 fleaphp 中,可以為每乙個表資料入口定義多個不同的關聯,例如 首先插入一條 users 記錄 modelusers new users newuserid modeluser...