国内精品欧美视频一区二区,成年人网站一级黄色免费,欧美一区二区三区不卡放荡的寡妇,欧美成人性生活视频在线观看

中山php|最優(yōu)網(wǎng)絡(luò)中山做網(wǎng)站 中山php建站

最優(yōu)良人

2011/09/06 at 16:13

FleaPHP數(shù)據(jù)表關(guān)聯(lián)設(shè)置

目前,F(xiàn)leaPHP支持四種類型的數(shù)據(jù)表關(guān)聯(lián),分別是:

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

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

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

);

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

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

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

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

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

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

表定義
在 HAS_ONE 關(guān)聯(lián)中,要求外鍵放置在關(guān)聯(lián)表中

分別對應(yīng)FLEA_Db_TableDataGateway表中的 $hasOne,$hasMany,$manyToMany,$belongsTo 屬性

我們下面就用 老師,學(xué)生,學(xué)生檔案,班級的例子說說這幾個關(guān)系。

以下是SQL代碼:

//學(xué)生表
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`)
)//學(xué)生檔案表
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`)
)

//由于教師與班級是多對多關(guān)系,所有建立一個中間連接表以表示該關(guān)聯(lián)
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`)
)

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

//學(xué)生表對應(yīng)的類
class Model_Student extends FLEA_Db_TableDataGateway{
var $tableName = ’student’;
var $primaryKey = ’stu_id’;

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

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

/*
這里確立了教師與班級的多對多關(guān)系,一個教師可以教多個班級
而一個班級也有多個教師
tableClass 指定要建立多對多關(guān)系的表的類
joinTable 這個屬性要注意一個,這個是指定教師表與班級表關(guān)系的連接表
由于二維表的數(shù)據(jù)結(jié)構(gòu)的原因,所以多對多關(guān)系要用一個中間表(即連接表)來表示
連接表中就指明兩個表各自的主鍵ID就可以了,以兩個字段作復(fù)合主鍵,如不用復(fù)合
主鍵,就新增加一個字段作主鍵也可,這沒關(guān)系
*/
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’;

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

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

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

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

現(xiàn)在我們來測試一下數(shù)據(jù)。(事先自行插入幾行數(shù)據(jù)用以測試)

$classManager = FLEA::getSingleton(‘Model_Classes’);
$class =& $classManager->find(array(‘class_id’ => 1));
dump($class);
標簽:,
-
亚洲永久在线宅男天堂-精品亚洲成a人在线看片-国产精品人成免费国产-亚洲欧洲国产精品自拍| 熟女国产精品一区二区三-一区二区三区av这些免费观看-精品国产一区二区二三区在线观看-国产精品一品二区三区日韩| 国内外成人综合免费视频-久久国产精品99久久蜜臀-大三美女口爆吞精视频-亚洲国产一区二区精品性色| 亚洲一区二区三区视频观看-日韩精品一二三四区视频-亚洲码与欧洲码区别入口-日韩精品大片一区二区三区| 国产精品欧美日韩视频二区-少妇人妻系列中文在线-精品人妻一区二区三区四区不卡-少妇被无套内谢免费视频| 大奶人妻丝袜中出在线-亚洲一区久久中文字幕-国产成人av剧情自拍网站-嫩草伊人久久精品少妇av| 日本高清不卡码一区二区三区-国产性色av高清在线观看-亚洲黄色免费在线观看网站-亚洲性视频免费视频网站| 色激情五月关键词挖掘-日本精品一区二区三区视频-亚洲精品一区二区三区四区久久-亚洲综合久久激情久久| 四虎最新在线观看视频-水蜜桃一二二视频在线观看免费-一区二区精品在线观看视频-成人高清在线播放视频| 热99在线视频免费观看-日本老男人同性恋黄色.-精品国产一区二区三区四不卡在线-久亚洲一线产区二线产区三线麻豆| 日韩黄片av在线免费观看-久久精品国产亚洲av色哟哟-亚洲第一中文字幕少妇-91久久精品国产性色tv| 91精品啪在线观看国产91蜜桃-国产国拍亚洲精品av在线-日韩在线亚洲清纯av天堂-久久亚洲国产精品五月天| 女生下面粉嫩在线视频-人妻熟女av国产在线-亚洲精品成人一区二区三区-商场偷拍女厕所撒尿视频| av午夜福利一片免费看久久-中文字幕日韩无敌亚洲精品-四虎高清成人在线观看-亚洲开心婷婷中文字幕| 第一亚洲自拍偷拍一区二区-国产精品成人一区二区不卡-中文字幕一区二区三区精品人妻-一区二区三区中文字幕在线播放| 日韩色视频免费观看网站大全-免费中文对白国产操片-国产农村妇女一页二页-欧美三级午夜理伦三级在线| 少妇被无套内谢免费视频看看-不卡中文在线观看网站-国产精品男女爽免费视频-91精品福利视频久久| 免费观看国产裸体视频-久久亚洲精精品中文字幕早川悠里-99精品国产一区二区青青牛奶-久久精品成人av免费观看| 亚洲少妇插进去综合网-久草免费在线人妻视频-丰满人妻熟妇乱精品视频-日韩极品精品视频免费在线观看| 久久精品中文字幕一区二区-日本夫妻性生活视频播放-综合久久精品亚洲天堂-日韩中文字幕不卡久久| 国产一级亚洲一级一区-国产精品一亚洲av日韩av-日韩高清有码中文字幕-久久国产精品免费一区二区三区| 绯色高清粉嫩国产精品-色偷偷亚洲偷自拍视频-国产性感午夜天堂av-**精品中文字幕一区二区三区| 亚洲免费国产午夜视频-女同亚洲一区二区三区精品久久-欧美一级黄片高清免费-久久国产亚洲中文字幕| 亚洲三级免费在线播放-国产男女做a视频免费在线观看-六月婷婷缴情七月丁香-国产黄色片三级久久久| 国产精品99一区二区三区-伦理激情婷婷综合五月天-综合久久av一区二区三区-99精品国产在热久久| 国产高清丝袜av综合-精品亚洲一区二区在线-国产丝袜大长腿精品丝袜美女-日本熟女午夜福利视频| 国产丝袜爆操在线观看-亚洲老熟妇日本五十六十路-亚洲av乱码久久亚洲精品-综合激情四射亚洲激情| 极品尤物高颜值女神露脸-免费视频一区二区三区美女-麻豆av国语对白麻豆-亚洲精品国产午夜精品| 少妇高潮了好爽在线观看男-麻豆国产传媒国产免费-欧美三级黄片在线播放-亚洲一区域二区域三区域四| 成人av毛片18岁免费看-亚洲熟妇av一区二区三区宅男-欧美日韩另类视频在线观看-另类亚洲国产另类亚洲| 拉风色国产精品一区二区三区-av一级不卡手机在线观看-亚洲欧美日韩国产色另类-青青草伊人视频在线观看| 国产在线精品免费一区二区三区-国产精品毛片内在线看-久久精品国产亚洲av不卡性色-日韩中文不卡在线视频| 久久成人三级一区二区三区-自拍视频在线观看成人-成人日韩在线中文字幕有码-国产黄色盗摄在线观看| 日韩欧美国产在91啦-激情偷拍自拍在线观看-一本大道久久香蕉成人网-亚洲精品中文字幕观看| 日本中文字幕人妻在线视频-中文字幕亚洲中文字幕亚洲-欧美午夜福利天堂视频-日韩人妻中文字幕精品| 开心五月激情五月综合-国产88精品久久久久久-乱人伦精品视频在线观看-秘社一区二区三区一午夜日本| 尤物视频在线观看网址-欧美午夜精品久久福利-久久这里只有精品视频5-国产精品成人综合色区| 免费人成视频在线观看播放网站-日韩精品久久精品三级-91精品一区二区三区久久蜜桃-中文字幕av久久激情亚洲精品| 亚洲一区二区三区视频观看-日韩精品一二三四区视频-亚洲码与欧洲码区别入口-日韩精品大片一区二区三区| 欧美日韩精品啪啪91-成年人免费在线观看大片-国产精品麻豆一区二区三区v视界-av中文在线中文亚洲| 免费人成视频在线播放-成人级a爱看片免费观看-激情偷乱在线视频播放网-激情综合网激情综合网激情|