久久er精品视频_先锋影院在线亚洲_影音先锋一区_性色av香蕉一区二区

中山php|最優網絡中山做網站 中山php建站

最優良人

2011/09/06 at 16:13

FleaPHP數據表關聯設置

目前,FleaPHP支持四種類型的數據表關聯,分別是:

HAS_ONE: 當前表的每一條記錄都擁有最多一條(0–1)關聯記錄
HAS_MANY: 當前表的每一條記錄都擁有多條(0-n)關聯記錄
MANY_TO_MANY: 當前表的每一條記錄都和其他表的多條(0-n)記錄關聯
BELONGS_TO: 當前表的每一條記錄都屬于另一個表的某條記錄

關聯中必須設置的屬性為:
‘name’, // 關聯的名字(如:hasOne、hasMany)
‘tableClass’, // 關聯的表數據入口對象名
‘mappingName’, // 字段映射名

可選屬性:
‘foreignKey’, //外鍵字段名
’sort’, //對關聯表進行查詢時使用的排序參數
‘conditions’, //對關聯表進行查詢時使用的條件參數
‘fields’, //對關聯表進行查詢時要獲取的關聯表字段
‘limit’, //對關聯表進行查詢時限制查出的記錄數
‘enabled’, //是否處理關聯,設置為falses時,不處理該表入口的任何關聯。enabled 的優先級高于 linkRead、linkCreate、linkUpdate 和 linkRemove。
‘countOnly’, //指示在查詢關聯表時是否僅僅統計記錄數,而不實際查詢數據
‘counterCache’, //將關聯記錄總數緩存到指定的字段,數據表中要建立相應的字段
‘linkRead’, //指示是否在主表讀取記錄時也讀取該關聯對應的關聯表的記錄,默認ture
‘linkCreate’, //指示是否在主表創建記錄時也創建該關聯對應的關聯表的記錄,默認ture
‘linkUpdate’, //指示是否在主表更新記錄時也更新該關聯對應的關聯表的記錄,默認ture
‘linkRemove’, //指示是否在主表刪除記錄時也刪除該關聯對應的關聯表的記錄,默認ture
‘linkRemoveFillValue’, //當刪除主表記錄而不刪除關聯表記錄時,用什么值填充關聯表記錄的外鍵字段,默認0
’saveAssocMethod’, //指示當保存關聯數據時,采用何種方法,默認為 save,可以設置為 create、update 或 replacevar $belongsTo = array(
‘tableClass’ => ‘Table_Users’,
‘mappingName’ => ‘author’,
‘foreignKey’ => ‘user_id’
);

var $hasOne = array(
‘tableClass’ => ‘Table_Profiles’,
‘mappingName’ => ‘profiles’,
‘foreignKey’ => ‘user_id’,
’saveAssocMethod’=> ’save’
);

var $hasMany = array(
‘tableClass’ => ‘Table_Profiles’,
‘mappingName’ => ‘profiles’,
‘foreignKey’ => ‘user_id’,
’saveAssocMethod’=> ’save’
);

var $manyToMany=array(

);

一個表可以有多個關聯
var $hasMany = array(
array(
‘tableClass’ => ‘Model_Permissions’,
‘foreignKey’ => ‘pclass_id’,
‘mappingName’ => ‘permissions’,
),
array(
‘tableClass’ => ‘Model_Products’,
‘foreignKey’ => ‘pclass_id’,
‘mappingName’ => ‘products’,
‘enabled’ => false,
),
[
array(
...
),
]
);
關聯: 一個關聯是一個關系,這個關系屬于某一個數據表。例如 users 表可能就擁有一個或者多個關聯。
主表: 對于一個關聯,擁有該關聯的數據表就是主表。例如 posts 表定義了一個 MANY_TO_MANY 關聯。
那么在這里(指這個關聯),posts 就是主表。

關聯表: 在一個關聯中,關聯表就是除主表外的另一個表。
外鍵: 在數據庫原理中,外鍵的含義很復雜。但在 FleaPHP 框架中的數據庫關聯功能中,
外鍵泛指一個記錄中用于關聯另一個記錄的字段。例如 profile 表中的 user_id 字段就是用于關聯 users 表的字段。
這個 user_id 字段就是一個外鍵。

中間表: 在 MANY_TO_MANY 關聯中,除了主表和關聯表,還需要另一個表來保存這兩個表的記錄之間的互相關聯關系。
這個表稱為中間表。
HAS_ONE 一對一關聯
HAS_ONE 是一種非常簡單的關聯關系。表示一個記錄擁有另一個記錄。這兩個記錄分別位于兩個數據表中。

示例
在一個信息管理系統中,users 表用于存儲用戶帳戶的基本信息,例如用戶名、密碼等。
而 profiles 表則用于存儲用戶的個人信息,例如家庭住址、郵政編碼等。

由于每一個用戶(一條 users 表中的記錄)都有一份對應的個人信息(一條 profiles 表中的記錄)。
因此,我們就可以為 users 表定義一個 HAS_ONE 關聯。

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

表定義
在 HAS_ONE 關聯中,要求外鍵放置在關聯表中

分別對應FLEA_Db_TableDataGateway表中的 $hasOne,$hasMany,$manyToMany,$belongsTo 屬性

我們下面就用 老師,學生,學生檔案,班級的例子說說這幾個關系。

以下是SQL代碼:

//學生表
Create TABLE `testDB`.`student` (
`stu_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`stu_name` VARCHAR(20) NOT NULL,
`stu_class_id` INTEGER UNSIGNED NOT NULL,
PRIMARY KEY (`stu_id`)
)//學生檔案表
Create TABLE `testDB`.`stu_record` (
`record_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`stu_id` INTEGER UNSIGNED NOT NULL,
`family_add` VARCHAR(150) NULL,
`family_tel` VARCHAR(20) NULL,
PRIMARY KEY (`record_id`)
)

//教師表
Create TABLE `testDB`.`teacher` (
`teacher_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`teacher_name` VARCHAR(20) NOT NULL,
PRIMARY KEY (`teacher_id`)
)

//班級表
Create TABLE `testDB`.`classes` (
`class_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`class_name` VARCHAR(20) NOT NULL,
PRIMARY KEY (`class_id`)
)

//由于教師與班級是多對多關系,所有建立一個中間連接表以表示該關聯
Create TABLE `testDB`.`link_teacher_classes` (
`link_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`teacher_id` INTEGER UNSIGNED NOT NULL,
`class_id` INTEGER UNSIGNED NOT NULL,
PRIMARY KEY (`link_id`)
)

現在,建好表之后,我們還要寫幾個繼承自FLEA_Db_TableDataGateway父類的類,以對應數據庫中的Student,Teacher,Classes表(連接表不用了)如下:

//學生表對應的類
class Model_Student extends FLEA_Db_TableDataGateway{
var $tableName = ’student’;
var $primaryKey = ’stu_id’;

/*
這是一對一關系,一個學生對應唯一的一個Record檔案
tableClass 對應要與之關聯一對一的表的對象類,即檔案表的類
foreignKey是在檔案表中,對應學生表的一個外鍵接連字段,
用該字段標識該檔案屬于哪個學生
mappingName 就是用于在你查詢學生信息時,學生檔案字段的別名
*/
var $hasOne = array(
’tableClass’ => ‘Model_Record’,
’foreignKey’ => ’stu_id’,
’mappingName’ => ‘record’
);
/*
這是從屬關系,一個學生屬于某一個班級,換過來說就是班級與學生一對多,
一個班級有多個學生,而學生就只屬于一個班級
tableClass 指定該類要與之有從屬關系的類,這里是班級類
foreignKey 這里指定的是該表里的連接外表的字段,這里是學生表的班級ID字段
注意:這里的foreignKey指的是本表的字段,而上面hasOne關系中的foreignKey
指的是外表中的字段,要注意區分清楚
mappingName這里就不多說了,跟上面的一樣,也是用于顯示區分的別名
*/
var $belongsTo = array(
array(
’tableClass’ => ‘Model_Classes’,
’foreignKey’ => ’stu_class_id’,
’mappingName’ => ‘class’
)
);
}//檔案表對應的類
class Model_Record extends FLEA_Db_TableDataGateway{
var $tableName = ’stu_record’;
var $primaryKey = ‘record_id’;
}

//教師表對應的類
class Model_Teacher extends FLEA_Db_TableDataGateway{
var $tableName = ‘teacher’;
var $primaryKey = ‘teacher_id’;

/*
這里確立了教師與班級的多對多關系,一個教師可以教多個班級
而一個班級也有多個教師
tableClass 指定要建立多對多關系的表的類
joinTable 這個屬性要注意一個,這個是指定教師表與班級表關系的連接表
由于二維表的數據結構的原因,所以多對多關系要用一個中間表(即連接表)來表示
連接表中就指明兩個表各自的主鍵ID就可以了,以兩個字段作復合主鍵,如不用復合
主鍵,就新增加一個字段作主鍵也可,這沒關系
*/
var $manyToMany = array(
array(
’tableClass’ => ‘Model_Classes’,
’mappingName’ => ‘class’,
’joinTable’ => ‘link_teacher_classes’,
)
);
}

class Model_Classes extends FLEA_Db_TableDataGateway{
var $tableName = ‘classes’;
var $primaryKey = ‘class_id’;

/*
這里確立了班級與學生的一對多關系
tableClass 指定該表的類要與哪個表的類建立一對多關系
foreignKey 外鍵ID,這里即指定學生表中定義的班級ID,這個是外表的字段
*/
var $hasMany = array(
array(
’tableClass’ => ‘Model_Student’,
’foreignKey’ => ’stu_class_id’,
’mappingName’ => ’students’
)
);

var $manyToMany = array(
// 由于多對多關系是雙向的,所以班級表也可以定義上與教師表的多對多關系
// 也可以不寫,看需求而定,比如你想查看某個班級信息時,一并顯示該班
// 有多少個任課老師的話,那就在這個班級類里加上關系,我這里就不寫了。。。
);
}

以上的代碼就建立好了關系了,現在只管使用就是了。
不過還提醒大家一點,在每個關系里,都有一個 ‘enabled’ 的屬性,如果設置為 false的話,則是將該關系禁掉,所以查詢出來的結果就沒有該關系的相應數據,這樣可以節省效率,按需要時才打開相應的關聯,該屬性默認為true 可以如下設置:

array(
’tableClass’ => ‘Model_Student’,
’foreignKey’ => ’stu_class_id’,
’mappingName’ => ’students’,
‘enabled’ => false
)

現在我們來測試一下數據。(事先自行插入幾行數據用以測試)

$classManager = FLEA::getSingleton(‘Model_Classes’);
$class =& $classManager->find(array(‘class_id’ => 1));
dump($class);
標簽:,
-
久久er精品视频_先锋影院在线亚洲_影音先锋一区_性色av香蕉一区二区
中国成人在线视频| 亚洲精品欧美在线| 久久免费少妇高潮久久精品99| 久久久午夜视频| 亚洲国产精品激情在线观看| 欧美顶级艳妇交换群宴| 日韩亚洲在线观看| 久久久久久69| 亚洲裸体俱乐部裸体舞表演av| 欧美日韩国产成人| 香蕉亚洲视频| 亚洲国产mv| 亚洲欧美视频一区| 激情文学综合丁香| 欧美色中文字幕| 久久爱另类一区二区小说| 亚洲电影免费在线观看| 亚洲砖区区免费| 亚洲第一狼人社区| 国产精品久久久久99| 久久裸体视频| 亚洲午夜激情网站| 欧美成人性生活| 午夜久久久久久久久久一区二区| 樱花yy私人影院亚洲| 欧美视频在线免费看| 久久久.com| 亚洲视频精选在线| 欧美激情第10页| 欧美在线视频免费播放| 亚洲免费电影在线| 黄色综合网站| 国产精品一级在线| 欧美精品91| 久久蜜桃香蕉精品一区二区三区| 中日韩美女免费视频网站在线观看| 奶水喷射视频一区| 欧美在线免费看| 中国女人久久久| 91久久精品日日躁夜夜躁欧美 | 亚洲大片免费看| 国产精品大片wwwwww| 久久最新视频| 久久精品国产精品亚洲综合| 一区二区福利| 亚洲精品永久免费| 欧美成人一品| 久久性色av| 久久国产视频网| 亚洲小说欧美另类社区| 亚洲精选在线观看| 亚洲人成在线观看| 亚洲国产日韩在线一区模特| 狠久久av成人天堂| 国产日韩成人精品| 国产精品社区| 国产精品一区二区在线观看不卡| 欧美日韩一卡二卡| 欧美日韩精品在线视频| 欧美精品二区三区四区免费看视频| 久久精品视频网| 久久久国产亚洲精品| 欧美一区二区观看视频| 亚洲欧美日韩精品久久久| 亚洲天堂男人| 亚洲一区二区三区在线播放| 亚洲视频网在线直播| 一区二区三区精品国产| 一本到12不卡视频在线dvd| 一本一本a久久| 亚洲影视综合| 羞羞漫画18久久大片| 欧美一区三区三区高中清蜜桃| 午夜精品久久久久久久| 欧美一区二区三区精品| 欧美一区在线看| 久久久九九九九| 毛片基地黄久久久久久天堂| 老司机午夜精品视频在线观看| 免费看黄裸体一级大秀欧美| 欧美成人精品不卡视频在线观看 | 欧美成人免费网| 欧美福利电影网| 亚洲人成网站在线观看播放| 99视频有精品| 午夜精品亚洲| 久久影院亚洲| 欧美日韩亚洲一区| 国产日韩欧美亚洲一区| 国产一区二区三区久久久| 国语自产精品视频在线看| 亚洲福利视频三区| 中文日韩在线视频| 欧美在线www| 欧美暴力喷水在线| 亚洲免费av网站| 小处雏高清一区二区三区| 久久久久久久综合狠狠综合| 欧美成年视频| 国产精品综合| 亚洲第一网站| 亚洲一区精品电影| 久久综合电影| av72成人在线| 久久性色av| 国产精品成人aaaaa网站| 国产一区二区三区久久久| 亚洲精品系列| 久久久蜜桃精品| 亚洲精品综合| 久久久久国产精品麻豆ai换脸| 欧美人与性动交cc0o| 国产一区二区毛片| 一区二区三区日韩欧美| 久久久精品国产一区二区三区| 91久久精品国产91久久性色tv| 亚洲欧美日韩一区二区| 欧美xx69| 国产在线精品成人一区二区三区| 亚洲精品黄网在线观看| 久久精品国产成人| 99热在这里有精品免费| 久久久免费观看视频| 国产精品久久7| 亚洲美女免费视频| 久久最新视频| 亚洲欧美日本另类| 欧美日韩不卡视频| 亚洲国产精品99久久久久久久久| 午夜精品久久久久久久蜜桃app| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲免费观看高清完整版在线观看熊 | 欧美日韩国产综合视频在线观看中文| 国产亚洲一区二区三区在线观看 | 欧美中文在线免费| 欧美三区美女| 亚洲免费观看高清完整版在线观看| 久久精品国产久精国产一老狼| 99re66热这里只有精品3直播| 久久综合九色综合久99| 国产亚洲一区精品| 欧美一区二区精品久久911| 日韩小视频在线观看专区| 免费观看久久久4p| 亚洲国产毛片完整版| 久久午夜精品一区二区| 新片速递亚洲合集欧美合集 | 国色天香一区二区| 欧美在线亚洲一区| 亚洲欧美国产不卡| 国产精品啊啊啊| 亚洲亚洲精品三区日韩精品在线视频| 亚洲国产日韩一区二区| 蜜桃久久av一区| 亚洲国产精品久久久久秋霞不卡 | 欧美极品欧美精品欧美视频| 亚洲高清激情| 欧美激情1区| 欧美肥婆在线| 99国产精品国产精品毛片| 亚洲黄色三级| 欧美久久久久免费| 亚洲天堂网在线观看| 99国产精品久久久久老师| 欧美性开放视频| 欧美一区二区三区在线| 亚洲欧美国产制服动漫| 国产欧美综合一区二区三区| 久久久久久伊人| 久久久亚洲高清| 91久久香蕉国产日韩欧美9色| 亚洲国产精品t66y| 欧美日韩午夜剧场| 亚洲综合精品| 久久国产精品第一页| 在线欧美日韩| 亚洲精品视频一区| 国产精品素人视频| 美女日韩欧美| 欧美日本精品一区二区三区| 亚洲视频图片小说| 亚洲欧美国产高清| 在线不卡欧美| 日韩午夜剧场| 国产一区二区三区高清| 欧美成人午夜77777| 欧美日本韩国一区| 久久99在线观看| 欧美jizz19性欧美| 亚洲主播在线播放| 久久久久久成人| 亚洲素人一区二区| 久久国产高清| 中文国产一区| 久久精品国产精品亚洲| 日韩系列欧美系列| 性刺激综合网| 日韩一本二本av| 久久国产日韩| 亚洲特级片在线|