久艹网,亚洲一日韩欧美中文字幕2019,国产欧美日韩精品专区黑人,一区二区三区久久99

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

最優(yōu)良人

2011/09/10 at 10:26

辦公室白領(lǐng)特別是從事IT行業(yè)的,如何保護(hù)自己的頸椎

由于工作性質(zhì)的關(guān)系,整天上班8個小時要做在電腦前,下班回家還是對著電腦,現(xiàn)在脖子經(jīng)常疼痛并且僵硬,看來頸椎出問題了,看到一篇文章講述保護(hù)頸椎的,就轉(zhuǎn)過來了。

頸椎的24小時保養(yǎng)

亡羊補牢永遠(yuǎn)比不上未雨綢繆,與其等到頸椎受傷,再去接受長期繁瑣的治療,還不如先發(fā)制人,主動出擊,讓頸椎受到我們的精心照顧,不發(fā)生事故。

人體頸椎的24小時養(yǎng)生保健法(圖片來源:資料圖)

保養(yǎng)秘笈一7:00

早晨主動調(diào)溫

古人喜歡穿長衣服,一方面是為了禮儀,其實另一方面也是養(yǎng)生之需。無論冬夏,都要給自己的頸椎以舒適的溫度。 即使是為了美麗,也要在辦公室準(zhǔn)備一件披肩,以保護(hù)好頸背部。偶然有受寒現(xiàn)象,給自己煎一碗驅(qū)寒湯:材料是紅糖2湯匙、生姜7片,水煎10分鐘,飲用 1~2次就可以驅(qū)走寒氣。

人體頸椎的24小時養(yǎng)生保健法(圖片來源:資料圖)

保養(yǎng)秘笈二10:00

5分鐘的頸椎操

即使身處人多的辦公室,你也可以很好地保養(yǎng)頸椎,比如利用工間休息練習(xí)一下頸椎操:端坐,全身不動,單頭部運動,分別做低頭、抬頭、左轉(zhuǎn)、右轉(zhuǎn)、前伸、后縮;順、逆時針環(huán)繞動作。每次堅持5分鐘,動作要輕緩、柔和。

人體頸椎的24小時養(yǎng)生保健法(圖片來源:資料圖)

保養(yǎng)秘笈三14:00

兩種按摩的方法

經(jīng)過一個上午的工作,到了下午兩點鐘,可能脖子早已疲憊不堪,精力有些不支,這里有兩個最簡單的急救方法:

(1)脖子后面,從頭顱底端到軀干上部這一段分布著百勞穴的3個點。在不遺余力工作時,不妨抽出短短幾分鐘來按摩這3個反應(yīng)點,即刻緩解頸椎疲勞,放松全身。

(2)兩手手指互相交叉,放在頸部后方,來回摩擦頸部,力度要輕柔,連續(xù)摩擦50次,頸部發(fā)熱后,會有很放松和舒適的感覺。

人體頸椎的24小時養(yǎng)生保健法(圖片來源:資料圖)

保養(yǎng)秘笈四18:00

做做戶外運動

軟骨組織的營養(yǎng)可不是通過血液供給的,而是通過壓力的變化來進(jìn)行營養(yǎng)交換。如果缺乏活動的話,軟骨就會遭遇營養(yǎng)不良,進(jìn)而導(dǎo)致退化,增加戶外活動是養(yǎng)護(hù)頸椎的方法之一,要向你推薦的運動項目是游泳、打球、練瑜伽等。

人體頸椎的24小時養(yǎng)生保健法(圖片來源:資料圖)

保養(yǎng)秘笈五20:00

晚餐補腎加分

作為一位忙碌的白領(lǐng),你可能沒有足夠時間準(zhǔn)備健康營養(yǎng)的早餐和午餐,那晚餐的時候可以吃一些營養(yǎng)骨髓的食物。中醫(yī)認(rèn)為胡桃、山萸肉、生地、黑芝麻、牛骨等具有補腎髓功能,可以把這些材料加入到你的晚餐中,以起到強(qiáng)壯筋骨,推遲腎與脊柱蛻變的效果。

人體頸椎的24小時養(yǎng)生保健法(圖片來源:資料圖)

保養(yǎng)秘笈六21:00

學(xué)學(xué)大鵬展翅

看電視的時候,你可以學(xué)一學(xué)大鵬展翅:輕輕彎腰至90度,兩個手臂模仿大鵬飛行一樣伸展開,但可不要將頭抬起來,越高越好,堅持5分鐘。這個動作可以幫助你增加頸椎部肌肉的韌性。

人體頸椎的24小時養(yǎng)生保健法(圖片來源:資料圖)

保養(yǎng)秘笈七22:00

享受中藥熱敷

將小茴香些許、鹽半斤一起炒熱,裝入布袋,放在頸背部熱敷30分鐘。每日1次??筛纳祁i背部血循環(huán),緩解肌肉痙攣。注意,別讓溫度太高或時間過久。

人體頸椎的24小時養(yǎng)生保健法(圖片來源:資料圖)

保養(yǎng)秘笈八23:00

選擇健康枕頭

枕頭和床也是頸椎的親密伴侶,枕頭過高或者過低,床墊過于柔軟都會連累頸椎。枕頭寬度應(yīng)達(dá)肩部,中間低,兩端高的元寶形的保健枕頭對頸椎有很好的支撐作用,可以讓頸椎得到很好的休息;對于頸椎不好的人來說,木板床、棕繃床是上選,而那種過分柔軟的床肯定不利于頸椎。

comments Comments (266)    -
2011/09/08 at 16:45

Smarty模版中,數(shù)組的鍵名是一個變量的值,如何顯示該鍵名對應(yīng)的值

題目有點繞口,大概的意思是

php已經(jīng)賦給模版一個數(shù)組,數(shù)組的信息如下:

$config= array(

1=>'中山',

2=>'石岐'

);

數(shù)據(jù)庫存儲地區(qū)的字段記錄的是該數(shù)組的鍵名,如1,現(xiàn)在要在模版上顯示:中山。

如果這樣寫會報錯:

{{$config.$row.region}}

模版上的正確的寫法是:{{$config[$row.region]}}

今天遇到的問題還更復(fù)雜一點,數(shù)據(jù)庫字段存儲的是一些配置的序列化,所以在調(diào)取地區(qū)信息時還需要進(jìn)行反序列化處理,中間必須有一個賦值的過程:

{{assign var=param value=$l.params|unserialize}}

然后$param.region就可以取得1這個值了

標(biāo)簽:,
comments Comments (210)    -
2011/09/06 at 18:06

FleaPHP如何定義表關(guān)聯(lián)以及關(guān)聯(lián)的簡寫

定義從屬關(guān)聯(lián)

1、外鍵放置在主表中;
2、保存時不會自動更新關(guān)聯(lián)表的記錄;
3、刪除時也不會更新關(guān)聯(lián)表的記錄。

示例:
多個文章都屬于某一個欄目。

格式一:

* class Articles
* {
* var $belongsTo = array(
* array(
* ’tableClass’ => ‘Columns’,
* ’foreignKey’ => ‘column_id’,
* ’mappingName’ => ‘column’
* ),
* );
* }

在上面的格式中,foreignKey 表示在當(dāng)前表中用什么字段存儲對關(guān)聯(lián)表的主鍵引用。
mappingName 表示在主表的返回結(jié)果中,以什么名字保存關(guān)聯(lián)表的數(shù)據(jù)。
如果不提供 mappingName 參數(shù),則假定使用 tableClass。

格式二:

* class Articles
* {
* var $belongsTo = ‘Columns’;
* }

格式二是一種簡化寫法。foreignKey 字段名將和關(guān)聯(lián)表的主鍵字段名相同。

============================

$hasMany

定義一對多關(guān)聯(lián)

1、外鍵保存在關(guān)聯(lián)表中;
2、保存時自動更新關(guān)聯(lián)表的記錄;
3、刪除主表記錄時自動刪除關(guān)聯(lián)記錄。

示例:
每個用戶(user)有多張訂單 order。

格式一:

* class Users
* {
* var $hasMany = array(
* array(
* ’tableClass’ => ‘Orders’,
* ’foreignKey’ => ‘user_id’,
* ’mappingName’ => ‘orders’,
* ),
* );
* }

在一對多關(guān)系中,當(dāng)前表并不包含對關(guān)聯(lián)表的主鍵引用。
而是在關(guān)聯(lián)表中保存對當(dāng)前表的主鍵引用。
在上面的格式中,foreignKey 指示在關(guān)聯(lián)表中用什么字段存儲對當(dāng)前表的主鍵引用。
mappingName 表示在主表的返回結(jié)果中,以什么名字保存關(guān)聯(lián)表的數(shù)據(jù)。
如果不提供 mappingName 參數(shù),則假定使用 tableClass。

格式二:

* class Users
* {
* var $hasMany = ‘Orders’;
* }

簡化寫法中,foreignKey 字段名將和當(dāng)前表的主鍵字段名相同。

============================

$hasOne

定義一對一關(guān)聯(lián)
1、外鍵放置在關(guān)聯(lián)表中;
2、保存時如果有關(guān)聯(lián)對象,則自動創(chuàng)建或更新關(guān)聯(lián)表的記錄;
3、刪除主表記錄時自動刪除關(guān)聯(lián)記錄。

示例:
當(dāng)前表為 users,用于存儲用戶賬戶。而每個用戶賬戶有且只有一個對應(yīng)的個人信息(profile)記錄。

格式一:

* class Users
* {
* var $hasOne = array(
* array(
* ’tableClass’ => ‘Profiles’,
* ’foreignKey’ => ‘profile_id’,
* ’mappingName’ => ‘profile’,
* ),
* );
* }

在上面的格式中,foreignKey 表示在關(guān)聯(lián)表中用什么字段存儲對主表的主鍵引用。 mappingName 表示在主表的返回結(jié)果中,以什么名字保存關(guān)聯(lián)表的數(shù)據(jù)。 如果不提供 mappingName 參數(shù),則假定使用 tableClass。

格式二:

* class Users
* {
* var $hasOne = ‘Profiles’;
* }

格式二是一種簡化寫法。foreignKey 字段名將和主表的主鍵字段名名相同。

============================

$manyToMany

定義多對多關(guān)聯(lián)

1、外鍵保存在中間表里面;
2、保存時自動更新中間表;
3、刪除主表記錄時自動刪除中間表的相關(guān)記錄。

示例:
每個成員(member)可以擁有多個角色(role),而每個角色也可以指定給多個成員。

格式一:

* class Members
* {
* var $manyToMany = array(
* array(
* ’tableClass’ => ‘Roles’,
* ’joinTable’ => ‘member_roles’,
* ’foreignKey’ => ‘member_id’,
* ’assocforeignKey’ => ‘role_id’,
* ’mappingName’ => ‘roles’,
* ),
* );
* }

在多對多關(guān)系中,當(dāng)前表并不包含對關(guān)聯(lián)表的主鍵引用。
而是在一個中間表里面保存對當(dāng)前表和關(guān)聯(lián)表的主鍵引用。
在上面的格式中,joinTable 表示中間表的名字。foreignKey 和
assocforeignKey 分別表示在中間表里面用什么字段存儲對主表和
關(guān)聯(lián)表主鍵字段的引用。

mappingName 表示在主表的返回結(jié)果中,以什么名字保存關(guān)聯(lián)表的數(shù)據(jù)。
如果不提供 mappingName 參數(shù),則假定使用 tableClass。

格式二:

* class Members
* {
* var $manyToMany = ‘Roles’;
* }

簡化寫法中,foreignKey 字段名將和當(dāng)前表的主鍵字段名相同。
assocforeignKey字段名稱則和關(guān)聯(lián)數(shù)據(jù)表的主鍵字段名相同。
而中間表名稱將用FLEA_Db_TableDataGateway::getMidtableName() 方法計算。

hasOne 是一對多關(guān)聯(lián),表示一條主表記錄有一條對應(yīng)的關(guān)聯(lián)記錄。
而 belongsTo 是從屬關(guān)聯(lián),表示一條主表記錄屬于另一條關(guān)聯(lián)記錄。

hasOne 和 belongsTo 正好是相反的關(guān)系。

例如 “一個用戶”有一個“個人空間”。那么一個“個人空間”就屬于“一個用戶”。

由于 hasOne 實際上是 hasMany (一對多)關(guān)聯(lián)的一種特例,所以 belongsTo 和 hasMany 也是相反的關(guān)系。

標(biāo)簽:,
comments Comments (312)    -
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: 當(dāng)前表的每一條記錄都擁有最多一條(0–1)關(guān)聯(lián)記錄
HAS_MANY: 當(dāng)前表的每一條記錄都擁有多條(0-n)關(guān)聯(lián)記錄
MANY_TO_MANY: 當(dāng)前表的每一條記錄都和其他表的多條(0-n)記錄關(guān)聯(lián)
BELONGS_TO: 當(dāng)前表的每一條記錄都屬于另一個表的某條記錄

關(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)表進(jìn)行查詢時使用的排序參數(shù)
‘conditions’, //對關(guān)聯(lián)表進(jìn)行查詢時使用的條件參數(shù)
‘fields’, //對關(guān)聯(lián)表進(jìn)行查詢時要獲取的關(guān)聯(lián)表字段
‘limit’, //對關(guān)聯(lián)表進(jì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)表的記錄,默認(rèn)ture
‘linkCreate’, //指示是否在主表創(chuàng)建記錄時也創(chuàng)建該關(guān)聯(lián)對應(yīng)的關(guān)聯(lián)表的記錄,默認(rèn)ture
‘linkUpdate’, //指示是否在主表更新記錄時也更新該關(guān)聯(lián)對應(yīng)的關(guān)聯(lián)表的記錄,默認(rèn)ture
‘linkRemove’, //指示是否在主表刪除記錄時也刪除該關(guān)聯(lián)對應(yīng)的關(guān)聯(lián)表的記錄,默認(rèn)ture
‘linkRemoveFillValue’, //當(dāng)刪除主表記錄而不刪除關(guān)聯(lián)表記錄時,用什么值填充關(guān)聯(lián)表記錄的外鍵字段,默認(rèn)0
’saveAssocMethod’, //指示當(dāng)保存關(guān)聯(lián)數(shù)據(jù)時,采用何種方法,默認(rèn)為 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 表的記錄。因此,當(dāng) 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é)生表的一個外鍵接連字段,
用該字段標(biāo)識該檔案屬于哪個學(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),該屬性默認(rè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);
標(biāo)簽:,
comments Comments (365)    -
2011/09/06 at 16:10

FleaPHP的數(shù)據(jù)庫查詢條件匯總解析

本文將全面分析FleaPHP的數(shù)據(jù)庫查詢條件,包含字符串格式,數(shù)組格式,混合格式,in查詢,or查詢,關(guān)聯(lián)查詢等常用查詢。

FleaPHP的數(shù)據(jù)庫查詢條件$conditions 參數(shù)可以是整數(shù)、字符串和數(shù)組三種類型:

1.如果 $conditions 參數(shù)是一個整數(shù),則假定該整數(shù)為主鍵字段值。
view plaincopy to clipboardprint?
// 查詢主鍵字段值為1的記錄
$user = $tableUsers->find(1);

2.如果 $conditions 參數(shù)是一個字符串,則該字符串將直接作為查詢條件,這種方式可以支持最靈活的查詢條件。 例如:
view plaincopy to clipboardprint?
$conditions = 'id < 3'
$user = $tableUsers->find($conditions);
//生成的where字句為“WHERE id < 3”

3.1.如果 $conditions 參數(shù)是一個數(shù)組,且指定了鍵名和值,則查詢條件中字段名為鍵名,字段值等于鍵值。例如:

// 查詢id字段值為3的記錄
$conditions = array(
'id' => '1',
);
$user = $tableUsers->find($conditions);
//生成的where字句為“WHERE `id` = 1”

3.2.如果 $conditions 參數(shù)是一個數(shù)組,但其中的元素沒有鍵名, 則假定鍵值為自定義查詢條件,例如:

$conditions = array('id = 1');
// 生成的where字句為“WHERE `id` = 1”
$user = $tableUsers->find($conditions);

3.3.$conditions 為數(shù)組時,可以混用字符串和鍵值對兩種風(fēng)格:

$conditions = array(
'id < 3',
'sex' => 'male',
);
$user = $tableUsers->find($conditions);
// 生成的where字句為“id < 3 AND `sex` = 'male'”
$conditions = array( 'id < 3', 'sex' => 'male',);$user = $tableUsers->find($conditions);// 生成的where字句為“id < 3 AND `sex` = 'male'”
$conditions 為數(shù)組時,多個查詢條件之間將使用 AND 布爾運算符進(jìn)行連接。

3.4.“in()”查詢在FleaPHP中的實現(xiàn)

我們有時候要用到in這樣的操作,那么在condition里面怎么寫呢?

// 假如主鍵名為“id”,需要查詢id的值為1、2、3其中之一,則可以這樣寫:
$condition = array(
'in()' => array(1,2,3),
)

那么如果不是主鍵的話怎么寫了呢? 也很簡單,提供鍵值對即可。例如:
view plaincopy to clipboardprint?
$condition = array(
'in()' => array(
'username' => array('username1','username2')
)
)

3.5 or查詢的實現(xiàn)

當(dāng) $conditions 包含多個元素時,每一個數(shù)組元素都是下列格式的數(shù)組:
array(字段名, 值, 比較操作, 連接下一個條件的操作, 是否是自定義命令)如果“是否是自定義命令”為 true,則“字段名”為自定義的查詢條件,而“值”和“比較操作”兩項將被忽略。
“比較操作”的默認(rèn)值是“=”;
“連接下一個條件的操作”的默認(rèn)值是“AND”;
“是否是自定義命令”的默認(rèn)值是 false。

$conditions = array(
array('username', 'dualface', '=', 'OR'),
array('user_level', 'vip', '>='),
);

生成的 sql 如下

WHERE `username` = 'dualface' OR `user_level` >= 'vip'

實例代碼:
$conditions =array(
array('Field1','Value1','LIKE','OR'),
array('Field2','Value2','=','OR'),
array('Field3','Value3','>'),
);

3.6.關(guān)聯(lián)表限制條件

上面介紹的都是相對于主表而言的,那么我們?nèi)绾蝸聿僮麝P(guān)聯(lián)表的條件呢?我們來看下面
$conditions =array(
array('Field1','Value1','LIKE','OR'),
array('mappingName.Field',$this->primaryKey,'=','OR'), //這里的field是指關(guān)聯(lián)表中的字段 ,mappingName就是定義關(guān)聯(lián)時候那個影像別名
array('Field2','Value2','>'),
);

4.find(),findAll()函數(shù)中其它參數(shù)的含義和用法如下:
find ( $ conditions,
$ sort = null,
$ fields = '*',
$ queryLinks = true
)
findAll ( $ conditions = null,
$ sort = null,
$ limit = null,
$ fields = '*',
$ queryLinks = true
)

4.1.$sort 參數(shù)指定查詢時的排序方式,類型只能為字符串
例如 'created ASC' 表示按照“created”字段進(jìn)行從小到大的排序。

4.2.$fields 參數(shù)指定查詢結(jié)果中要包含哪些字段,類型可以為字符串或數(shù)組
當(dāng)數(shù)據(jù)表的字段很多時,通過指定 $fields 參數(shù)可以避免查詢不需要的字段,從而提高性能。
$fields 參數(shù)即可是以“,”逗號分隔的字段名,也可以是包含多個字段名的數(shù)組,例如:

$fields = array('title', 'created');
//也可以寫成下面的字符串形式,兩種寫法作用相同,區(qū)別在于自動生成的字段名兩邊將會添加上“`”符號,以防止出現(xiàn)字段名與SQL關(guān)鍵字沖突的情況出現(xiàn)。建議手寫時也加上“`”字符
$fields = 'title, created';
$user = $tableUsers->find('id < 10',NULL,$fields);
$fields = array('title', 'created');//也可以寫成下面的字符串形式,兩種寫法作用相同,區(qū)別在于自動生成的字段名兩邊將會添加上“`”符號,以防止出現(xiàn)字段名與SQL關(guān)鍵字沖突的情況出現(xiàn)。建議手寫時也加上“`”字符$fields = 'title, created';$user = $tableUsers->find('id < 10',NULL,$fields);
推薦使用數(shù)組,這樣表數(shù)據(jù)入口處理起來更快一些。

4.3.$queryLinks表示是否啟用關(guān)聯(lián)查詢,默認(rèn)是啟用的,即默認(rèn)會查詢關(guān)聯(lián)表(前提是關(guān)聯(lián)設(shè)置屬性enabled是開啟狀態(tài))

下一篇文章將討論一下FleaPHP的數(shù)據(jù)表關(guān)聯(lián)設(shè)置

標(biāo)簽:,
comments Comments (274)    -
2011/09/03 at 10:11

robots.txt文件的規(guī)則以及限制目錄帶不帶斜杠的區(qū)別

一個網(wǎng)站的robots文件對于做seo是至關(guān)重要的,它可以限制搜索引擎蜘蛛抓取不該收錄的目錄或者頁面,避免資源的浪費,它的規(guī)則主要有以下幾點:

1) User-Agent鍵

后面的內(nèi)容對應(yīng)的是各個具體的搜索引擎爬行器的名稱。如百度是Baiduspider,谷歌是Googlebot。

一般我們這樣寫:

User-Agent: *

表示允許所有搜索引擎蜘蛛來爬行抓取。如果只想讓某一個搜索引擎蜘蛛來爬行,在后面列出名字即可。如果是多個,則重復(fù)寫。

注意:User-Agent:后面要有一個空格。

在robots.txt中,鍵后面加:號,后面必有一個空格,和值相區(qū)分開。

2)Disallow鍵

該鍵用來說明不允許搜索引擎蜘蛛抓取的URL路徑。

例如:Disallow: /index.php 禁止網(wǎng)站index.php文件

Allow鍵

該鍵說明允許搜索引擎蜘蛛爬行的URL路徑

例如:Allow: /index.php 允許網(wǎng)站的index.php

通配符*

代表任意多個字符

例如:Disallow: /*.jpg 網(wǎng)站所有的jpg文件被禁止了。

結(jié)束符$

表示以前面字符結(jié)束的url。

例如:Disallow: /?$ 網(wǎng)站所有以?結(jié)尾的文件被禁止。

應(yīng)該注意的是:

1,在"/robots.txt"文件中,至少要有一條Disallow記錄,允許收錄優(yōu)先級要高于禁止收錄,如
User-agent: *
Allow: /a/b.htm
Disallow: /a/
則a目錄下b.htm可以訪問,其他禁止

2,注意路徑后面加斜杠和不加斜杠的區(qū)別
如果目錄后邊帶斜杠,那么訪問不帶斜杠的地址時還是可以訪問目錄首頁,如果想屏蔽掉整個目錄,建議不帶斜杠

Allow或Disallow的值 URL 匹配結(jié)果
/tmp /tmp yes
/tmp /tmp.html yes
/tmp /tmp/a.html yes
/tmp/ /tmp no
/tmp/ /tmphoho no
/tmp/ /tmp/a.html yes
/Hello* /Hello.html yes
/He*lo /Hello,lolo yes
/Heap*lo /Hello,lolo no
html$ /tmpa.html yes
/a.html$ /a.html yes
htm$ /a.html no

 
3,robots文件只有放在根目錄才有效,放在子目錄沒效。

4,robots.txt文件用法舉例

例1. 禁止所有搜索引擎訪問網(wǎng)站的任何部分 User-agent: *
Disallow: /
例2. 允許所有的robot訪問
(或者也可以建一個空文件 “/robots.txt”)
User-agent: *
Disallow:

或者
User-agent: *
Allow: /
例3. 僅禁止Baiduspider訪問您的網(wǎng)站 User-agent: Baiduspider
Disallow: /
例4. 僅允許Baiduspider訪問您的網(wǎng)站 User-agent: Baiduspider
Disallow:
 

User-agent: *
Disallow: /

例5. 禁止spider訪問特定目錄
在這個例子中,該網(wǎng)站有三個目錄對搜索引擎的訪問做了限制,即robot不會訪問這三個目錄。需要注意的是對每一個目錄必須分開聲明,而不能寫成 “Disallow: /cgi-bin/ /tmp/”。
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /~joe/
例6. 允許訪問特定目錄中的部分url User-agent: *
Allow: /cgi-bin/see
Allow: /tmp/hi
Allow: /~joe/look
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /~joe/
例7. 使用”*”限制訪問url
禁止訪問/cgi-bin/目錄下的所有以”.htm”為后綴的URL(包含子目錄)。
User-agent: *
Disallow: /cgi-bin/*.htm
例8. 使用”$”限制訪問url
僅允許訪問以”.htm”為后綴的URL。
User-agent: *
Allow: .htm$
Disallow: /
例9. 禁止訪問網(wǎng)站中所有的動態(tài)頁面 User-agent: *
Disallow: /*?*
例10. 禁止Baiduspider抓取網(wǎng)站上所有圖片
僅允許抓取網(wǎng)頁,禁止抓取任何圖片。
User-agent: Baiduspider
Disallow: .jpg$
Disallow: .jpeg$
Disallow: .gif$
Disallow: .png$
Disallow: .bmp$
例11. 僅允許Baiduspider抓取網(wǎng)頁和.gif格式圖片
允許抓取網(wǎng)頁和gif格式圖片,不允許抓取其他格式圖片
User-agent: Baiduspider
Allow: .gif$
Disallow: .jpg$
Disallow: .jpeg$
Disallow: .png$
Disallow: .bmp$
例12. 僅禁止Baiduspider抓取.jpg格式圖片 User-agent: Baiduspider
Disallow: .jpg$

 

標(biāo)簽:,
comments Comments (349)    -
2011/09/01 at 09:34

wordpress半角引號變?nèi)堑慕鉀Q方法

解決WordPress半角引號自動轉(zhuǎn)換為全角引號問題有許多種方法,有插件,有修改源碼,有修改主題,下面介紹兩種:

一、通過修改主題functions.php實現(xiàn)(推薦使用):

在主題functions.php文件中加入以下代碼:

/*禁用半角引號自動轉(zhuǎn)換為全角引號*/
remove_filter('the_content','wptexturize');

二、通過修改WP源文件實現(xiàn):

注釋掉 wp-includes\formatting.php文件的下列兩行代碼即可

$curl = str_replace($static_characters, $static_replacements, $curl);
$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

標(biāo)簽:
comments Comments (17)    -
2011/08/30 at 16:20

flowplayer隱藏controls控制菜單面板

昨天已經(jīng)解決了flowplayer播放swf出現(xiàn)的重聲問題,但是還有一個問題就是下面controls控制菜單依然失效,沒辦法,客戶建議直接隱藏掉,下面是代碼:

flowplayer("kzxy_player", "/index/flowplayer/flowplayer-3.2.7.swf",{
clip: {
linkUrl:'#re',
onBegin: function () { this.getPlugin("play").hide(); }

},
plugins: {controls: null}

});

comments Comments (268)    -
2011/08/29 at 14:38

flowplayer播放swf文件出現(xiàn)play again按鈕并且點擊重播的解決方法

今天在修改一個項目,客戶網(wǎng)站用到flowplayer-3.2.7這個播放器來播放視頻文件,如果格式是flv格式的文件則播放沒有問題,如果格式是swf的文件,播放的時候就會出現(xiàn)一個play again 的按鈕一直在視頻上面,一點擊就會重新播放,聲音還會疊加,跑到官網(wǎng)去看手冊,最后想出一個解決的方案是把按鈕隱藏掉,但是這樣點擊視頻還是會出現(xiàn)重播,于是我給視頻加了一個鏈接,如下:

var txt = '<a onclick="return false"; href="<?php echo $mvurl; ?>" '
+ 'style="display:block;width:480px;height:360px;" id="kzxy_player"></a>';
document.write(txt);
flowplayer("kzxy_player", "/index/flowplayer/flowplayer-3.2.7.swf",{
clip: {
linkUrl:'#re',//加一個無動作的鏈接
onBegin: function () { this.getPlugin("play").hide(); } //隱藏按鈕

}

});

comments Comments (282)    -
2011/08/28 at 15:46

讓框架iframe高度自適應(yīng),可自動撐開高度

默認(rèn)iframe框架是不能撐開高度的,如果需要讓框架高度自適應(yīng)需要用js實現(xiàn)
js代碼:
var adjustIframe = function (id) {
var iframe = document.getElementById(id)
var idoc = iframe.contentWindow && iframe.contentWindow.document || iframe.contentDocument;
var callback = function () {
var iheight = Math.max(idoc.body.scrollHeight, idoc.documentElement.scrollHeight); //取得其高
iframe.style.height = iheight + "px";
}
if (iframe.attachEvent) {
iframe.attachEvent("onload", callback);
} else {
iframe.onload = callback
}
}
HTML代碼如下所示:
使用代碼:

window.onload = function(){
adjustIframe("js_sub_web");
}

標(biāo)簽:,
comments Comments (215)    -