【特別注意事項】
1、所有要用於訪問的屬性,都要先在類中宣告(原資料表中的字段是預設可訪問的,自定義的屬性值,一定要先在類中新增宣告,才可以正常訪問)
2、資料庫的表面引用,一般都是有固定的資料庫表字首的,在類中,使用 } 代表著 table_pre.tablename
3、model()方法是 static 方法,不用例項化即可直接使用,多用於查詢。
4、rules() 方法 是用來驗證字段合法性的,而且可以設定每個規則的應用環境標示,如'on'=>'search',這點要好好利用。
5、attributelabels() 方法是設定每個欄位的描述資訊。
6、search()方法,用來查詢
【如何獲取關聯資料表的其他字段值】
1)首先在關係宣告裡,指定要查詢的字段別名12
3456
78910
1112
1314
1516
1718
19/**
* @return array relational rules.
*/
public
function
relations()
}(id_order, id_visa)'
,
'select'
=>
array
(
'*'
, #獲取所有字段
'visas_visas.price as price_visa'
, #visas_visas是關係表的別名,獲取關係表裡的字段值
),
),
'user'
=>
array
(self::belongs_to,
'user'
,
'id_customer)'
),
);
}
2)然後,將關係別名在ar實體裡增加儲存其值的屬性。
class visa extends cactiverecord
3)然後通過關聯實體來訪問該別名字段的值。
$ordermodel->visas[0]->price_visa;
【belongs_to關係表,關聯的keyid如何自定義指定】
yii的relations裡self::belongs_to預設是用當前指定的鍵跟關聯表的主鍵進行join,例如:
return array(
'reply' => array(self::belongs_to, 'bookpostreply', 'postid'),
);
預設生成的sql是 on id = postid,id是bookpostreply的主鍵。
但今天我遇到的需求卻是需要生成 on bookpostreply.postid = t.postid,不去關聯主鍵,
後來無意中看到有個on的屬性,剛好跟sql裡的on一樣,於是抱著試試的想法,在配置裡加了上去
return array(
'reply' => array(self::belongs_to, 'bookpostreply', 'postid', 'on' => 't.postid=reply.postid'),
);
看除錯資訊裡的sql語句,發現yii生成了一條 on id = postid and t.postid=reply.postid 這樣的語句,看到這就已經明白這個東西的作用了,於是將postid清空,改成如下:
return array(
'reply' => array(self::belongs_to, 'bookpostreply', '', 'on' => 't.postid=reply.postid'),
);
其實,yii的文件有說明:
如果你需要指定自定義的pk->fk關聯,你可以定義陣列(『fk』=> 『pk')。
【多條件下關聯查詢結果集】
案例:$this->news =news::model()->with(array(
),'categories'=>array('condition'=>'categories.id_category='.$this->categoryid,'together'=>true),
))->findall(array(
'limit'=>$this->limit,
'condition'=>'t.active=1',
'order'=>'t.position'
));使用with('關係名稱1','關係名稱2
')方法,將延後查詢關聯表,
若如上案例,在with方法中,返回關係陣列,將更靈活。
若想即時聯合查詢,需要新增'together'=>true屬性值,才會組合為一句sql進行查詢。
我們來看下cactiverecord.php檔案裡,yii是如何設計with()方法的。
/**我們再去看 cdbcriteria 類中的 mergewith 方法定義
:/**
)注意,這裡就是我要強調的地方,yii預設且只執行關聯表之間的and條件查詢,也就是說,在給定不同條件查詢時,yii只為我們求取不同條件的
交集結果返回。
但是在底層的cdbcriteria 類中,預留了引數
$operator給我們。有需求的同學需要重寫
cactiverecord來實現拓展了哦。
來自為知筆記(wiz)
YII 框架 php框架系列之新秀YII
這裡也強烈推薦yii框架,這個年輕的框架由美國華人開發,名叫薛強。yii framwork是2009最佳php框架。yii 是乙個基於元件 用於開發大型 web 應用的高效能 php 框架。它將 web 程式設計中的可重用性發揮到極致,能夠顯著加速開發程序。yii 讀作 易 代表簡單 easy 高效...
yii框架學習(一)yii框架介紹
yii幾乎擁有了當今web2.0應用發展的全部特性。下面是這些特性的乙個簡短的清單。yii是乙個基於元件 用於開發大型web應用的高效能php框架。在web開發中yii可以最大限度的實現 重用,極大的提高開發的速度。名字yii 讀音是yee or ji 應該就是 易 的讀音 代表的是容易 easy ...
yii框架學習(六)yii框架相應處理
yii框架使用response類來修改statuscode,如下 res statuscode 404 複製 使用header類下的add方法既可以,如下是新增禁止瀏覽器快取配置資訊。res headers add pragma no cache 複製 使用set方法來修改 res headers ...