我是yii框架的新手。我在yii框架中有三个不同的表。
第一张表
第一个表是language(id,language_name)// id是主键。
第二张表
第二个表是经文(id,topic_id,verse_text)// id是主键,topic_id是外键。
第三表
第三个表是verse_translations(id,verse_id,language_id,translations_text) // id是主键,language_id是带有语言表的外键引用,// verse_id是带有verse表的外键引用。
现在我的问题是。
我希望获得具有特定topic_id的所有verse_text。
那么如何通过外键(即topic_id)从模型 Verse 获取所有记录,这些记录应该由数据提供者函数发送到视图。
此时我正在使用。
我的控制器方法
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'),
);
}
任何帮助将不胜感激。
感谢。
答案 0 :(得分:2)
要获取具有特定topic_id的所有Verse记录,这应该可以解决问题:
$records = Verse::model()->findAllByAttributes(array('topic_id' => $topic_id));
答案 1 :(得分:0)
当您在模型中声明了关系时,您只需使用
就不需要从db中获取数据 $result=Verse::model()->findAll();
然后当你使用这个
$result->topic->field_name of topic table
这将得到结果。