Php 如何在yii中通过外键从模型中获取记录
我是yii框架的新手。我在yii框架中有三个不同的表 第一个表格 第一个表是language(id,language_name)//id是主键 第二张表 第二个表是verse(id,topic\u id,verse\u text)//id是主键,topic\u id是外键 第三张表 第三个表是诗歌翻译(id、诗歌id、语言id、翻译文本) //id是主键,language_id是带有language表的外键引用,//verse_id是带有verse表的外键引用 现在我的问题是。 我想获得所有带有特定主题id的文本 因此,如何通过外键(即topic_id)从modelVerse中获取所有记录,这些记录应该通过数据提供程序函数发送给查看 此时我正在使用 我的控制器方法Php 如何在yii中通过外键从模型中获取记录,php,yii,Php,Yii,我是yii框架的新手。我在yii框架中有三个不同的表 第一个表格 第一个表是language(id,language_name)//id是主键 第二张表 第二个表是verse(id,topic\u id,verse\u text)//id是主键,topic\u id是外键 第三张表 第三个表是诗歌翻译(id、诗歌id、语言id、翻译文本) //id是主键,language_id是带有language表的外键引用,//verse_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'),
);
}
但这并没有给我想要的结果
我的诗歌模型关系方法
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'),
);
}
任何帮助都将不胜感激
谢谢。要获取具有特定主题id的所有诗句记录,请执行以下操作:
$records = Verse::model()->findAllByAttributes(array('topic_id' => $topic_id));
当您在模型中声明了关系后,您不需要使用simply use从数据库中获取数据
$result=Verse::model()->findAll();
然后当你用这个的时候
$result->topic->field_name of topic table
这将给出结果