【问题标题】:how to fetch record from model through foreign key in yii如何通过yii中的外键从模型中获取记录
【发布时间】:2013-12-10 11:19:55
【问题描述】:

我是 yii 框架的新手。我在 yii 框架中有三个不同的表。

第一个表

第一个表是语言(id, language_name) // id 是主键。

第二张表

Second Table is verse(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)从模型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));
}

但它没有给出我想要的结果。

My Verse 模型关系法

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'),
    );
}

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: php yii


    【解决方案1】:

    要获取具有特定 topic_id 的所有 Verse 记录,这应该可以解决问题:

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

    【讨论】:

      【解决方案2】:

      当您在模型中声明了关系后,您不需要使用 with 来从 db 中获取数据,只需使用

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

      然后当你使用这个

       $result->topic->field_name of topic table
      

      这将给出结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-11
        • 2012-03-11
        • 1970-01-01
        • 1970-01-01
        • 2014-12-10
        相关资源
        最近更新 更多