資料表關聯是指兩個或者多個資料表的記錄之間的邏輯關係。
例如:
目前,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...