久久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国产成+人+综合+亚洲欧美| 卡一卡二国产精品| 久久视频一区| 亚洲精品在线三区| 日韩视频久久| 国产麻豆9l精品三级站| 久久免费视频观看| 欧美肥婆在线| 亚洲免费影视| 久久国产精品一区二区三区| 亚洲国产三级| 亚洲精品国产视频| 国产精品拍天天在线| 久久久成人网| 欧美精品www在线观看| 亚洲午夜精品久久| 久久国产精品电影| 日韩视频在线永久播放| 亚洲尤物在线视频观看| 在线看欧美日韩| 一区二区三区视频在线观看| 国产亚洲aⅴaaaaaa毛片| 免费在线观看一区二区| 欧美经典一区二区三区| 久久国产欧美| 欧美激情一区二区三区高清视频 | 亚洲精品女人| 午夜日本精品| 在线亚洲一区二区| 久久成人18免费网站| 一区二区三区精品久久久| 午夜精品区一区二区三| 一区二区电影免费在线观看| 久久成人资源| 午夜精品999| 欧美激情视频给我| 久久午夜av| 国产精品影片在线观看| 亚洲国产精品久久| 黄色成人免费网站| 亚洲在线观看| 亚洲伊人观看| 欧美国产日本韩| 男同欧美伦乱| 国产原创一区二区| 亚洲欧美日韩精品在线| 一区二区国产日产| 欧美搞黄网站| 欧美成人国产| 亚洲国产99| 久久久久久国产精品mv| 欧美伊久线香蕉线新在线| 欧美日韩在线综合| 亚洲国产一区在线| 亚洲精品久久久久久下一站| 久久综合激情| 欧美成人精品h版在线观看| 国内精品嫩模av私拍在线观看| 亚洲一区二区三区在线看| 亚洲一区二区在线看| 欧美日本一区二区高清播放视频| 欧美成人免费一级人片100| 在线高清一区| 美乳少妇欧美精品| 欧美国产高潮xxxx1819| 在线观看视频一区二区欧美日韩| 久久精品一区四区| 狼人社综合社区| 136国产福利精品导航网址| 久久亚洲精品伦理| 欧美国产激情| 9i看片成人免费高清| 欧美日韩国产高清| 一区二区av| 久久精品99国产精品日本| 国产资源精品在线观看| 久久久国产91| 欧美电影免费观看高清完整版| 最新成人av网站| 欧美日韩人人澡狠狠躁视频| 一本色道久久加勒比88综合| 午夜在线成人av| 今天的高清视频免费播放成人| 免费在线成人av| 99精品福利视频| 久久精品国产77777蜜臀| 一区在线观看| 欧美日韩国产不卡| 亚洲一区激情| 欧美xxx在线观看| 在线视频亚洲欧美| 国产日韩专区在线| 牛牛精品成人免费视频| 99re亚洲国产精品| 久久久久久久激情视频| 亚洲精品自在在线观看| 国产精品视频导航| 毛片基地黄久久久久久天堂| aa日韩免费精品视频一| 久久只精品国产| 一本色道久久加勒比88综合| 国产婷婷色一区二区三区在线| 久久天天狠狠| 亚洲欧美国产精品桃花| 亚洲激情电影在线| 久久精品一本| 亚洲视频网站在线观看| 亚洲大片一区二区三区| 国产精品高潮呻吟久久| 奶水喷射视频一区| 午夜精品久久久久久久白皮肤| 亚洲人成网站色ww在线| 久久精品水蜜桃av综合天堂| 一区二区三区四区国产精品| 韩国av一区二区三区在线观看| 欧美日韩精品综合| 免费黄网站欧美| 欧美在线观看天堂一区二区三区| 亚洲卡通欧美制服中文| 欧美大片免费观看| 久久精品国产v日韩v亚洲 | 精品动漫一区二区| 国产精品国产三级欧美二区| 欧美成人午夜激情| 久久成人一区| 欧美一区二区国产| 亚洲影院在线观看| 99精品视频免费观看视频| 亚洲黄网站黄| 欧美国产日韩一区二区在线观看| 久久久国产一区二区| 性色av一区二区怡红| 亚洲一区二区黄色| 中日韩高清电影网| 99精品久久久| 一本色道综合亚洲| 99视频精品在线| 日韩亚洲国产欧美| 日韩亚洲欧美综合| 亚洲激情在线观看视频免费| 亚洲国产精品一区在线观看不卡| 国产一区二区三区成人欧美日韩在线观看 | 亚洲高清色综合| 欧美国产免费| 亚洲欧洲精品一区二区精品久久久| 欧美激情精品久久久久久| 欧美大片在线看免费观看| 蜜乳av另类精品一区二区| 久久香蕉精品| 欧美阿v一级看视频| 亚洲国产精品久久久久| 亚洲美女毛片| 一区二区三区欧美日韩| 亚洲欧美综合网| 久久久免费精品| 欧美成人免费观看| 欧美日韩亚洲一区| 国产欧美精品在线观看| 国内成+人亚洲| 亚洲黄色影院| 99re在线精品| 久久国产主播| 亚洲第一福利社区| 一区二区三区四区精品| 午夜精品视频在线观看一区二区| 欧美主播一区二区三区美女 久久精品人 | 久久精品国产清自在天天线| 久久一区国产| 日韩视频免费在线| 香蕉视频成人在线观看| 麻豆精品在线视频| 国产精品久久久久国产精品日日| 国产区二精品视| 91久久久久久久久久久久久| 亚洲一区二区三区免费视频| 久久久久久色| 亚洲人成在线免费观看| 亚洲欧美中文另类| 欧美国产综合视频| 国产一区日韩二区欧美三区| 亚洲伦理在线观看| 久久精品三级| 日韩视频三区| 久久亚洲午夜电影| 国产精品久久久久久五月尺| 曰韩精品一区二区| 香蕉国产精品偷在线观看不卡 | 一本到高清视频免费精品| 欧美夜福利tv在线| 亚洲精品久久嫩草网站秘色| 久久国内精品自在自线400部| 欧美丝袜第一区| 亚洲精品日韩在线观看| 久久免费视频一区|