2013-12-10 123 views
0

我是yii框架中的新手。我在yii框架中有三個不同的表格。如何從模型中通過外鍵獲取記錄yii

第一表

第一表是語言(ID,語言名稱)// ID是主鍵。

第二表

第二表是節(ID,topic_id,verse_text)// ID是主鍵,topic_id是外鍵。

三表

三表verse_translations(ID,verse_id,LANGUAGE_ID,translations_text) // ID是主鍵,LANGUAGE_ID是語言表的外鍵引用,// verse_id與外鍵引用詩節表。

現在我的問題是。

我想獲取所有與特定topic_id的verse_text。

因此,如何通過外鍵即topic_id取從模型所有記錄,這些記錄應送交由數據提供者的功能來查看。

在這個時候我正在使用。

我控制器的方法

public function actionVerset() 
    { 
    $topic_id = 1; 
    $result=Verse::model()->with('topic_verse', $topic_id)->findAll(); 

    $dataProvider=new CArrayDataProvider($result, array(
     'id'=>'Verse', 
     'pagination'=>array(
     'pageSize'=>2, 
    ),)); 

    $this->render('myverse',array('dataProvider'=>$dataProvider)); 
} 

但它不給我的期望的結果。

我的詩句關係模型方法

public function relations() 
{ 
    return array(
    'topic' => array(self::BELONGS_TO, 'Topic', 'topic_id'), 
    'verseTranslations' => array(self::HAS_MANY, 'VerseTranslations', 'verse_id'), 
    'verseLanguage' => array(self::HAS_MANY, 'VerseTranslations', 'language_id'), 
    'topic_verse' => array(self::BELONGS_TO, 'Verse', 'topic_id'), 
    ); 
} 

任何幫助將不勝感激。

謝謝。

回答

2

要在指定的topic_id得到所有詩記錄,這應該做的伎倆:

$records = Verse::model()->findAllByAttributes(array('topic_id' => $topic_id)); 
+0

感謝您的幫助。 –

0

當你宣佈你的模型,你不要的關係需要從分貝使用取數據簡單地使用

$result=Verse::model()->findAll(); 

,然後當你使用這個

$result->topic->field_name of topic table 

這會給的,其結果。

相關問題