Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在yii中通过外键从模型中获取记录_Php_Yii - Fatal编程技术网

Php 如何在yii中通过外键从模型中获取记录

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表的外键引用 现在我的问题是。 我想获得所有带有

我是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中获取所有记录,这些记录应该通过数据提供程序函数发送给查看

此时我正在使用

我的控制器方法

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
这将给出结果