Yii1.1中的關聯查詢
Yii1權威指南在講述關係型活動記錄時,給出了下圖的資料表關係。首先以Yii 框架的方式對錶之間的關係進行分析。
post表與user 表是 BELONGS_TO關係:post表中的每一條記錄都只有一個author_id屬性,通過這個autho_id,在user表中可以找到唯一的使用者。在現實中的含義是,每一個帖子,都屬於唯一一個使用者;使用者(作者)發表一篇貼子以後,我們通過該帖子的author_id屬性,就可以找到這個帖子的作者。也就是說,post天生是屬於使用者的。在資料庫中,post 表有一個外來鍵author_id與user表的主鍵id對應。
user表與profile表是HAS_ONE
user表與post表是HAS_MANY關係:user表中的每一條記錄有多個post記錄與之對應。每個使用者可以有多個帖子。
HAS_ONE是HAS_MANY的特例。
假設post,user,profile,category幾個ActiveRecord模型中的relation都已經依照權威指南正確定義。我們可以以如下方式處理資料庫查詢。
渴求式載入:
將username為'cyz'的帖子的資訊以陣列的形式返回,以post id作為陣列索引。
$condition = 'username = :username';
$posts=Post::model()->with('author',category)
->findAll(array('condition' =>$condition,
'params' => array('username' => 'cyz'),
'index' => 'id'
));
foreach($posts as $key => $post) {
/*獲取帖子的使用者名稱 $post->author->username;*/
/*獲取帖子的標題 $post->title;*/
}