php – 如何从yii中的连接关系中获取数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 如何从yii中的连接关系中获取数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1937字,纯文字阅读大概需要3分钟。
内容图文
我是Yii的初学者,所以我问这个问题.
我有三张不同的桌子.
第一张表
第一个表是语言(id,language_name)
// id是主键.
第二张表
第二个表是经文(id,topic_id,surah_id,verse_text)
// id是主键,
第三张表
第三个表是verse_translations(id,verse_id,language_id,translations_text)
// id是主键,language_id是带语言表的外键引用,
// verse_id是带有verse表的外键引用.
现在我的问题是.
我想获得具有特定verse_id的可用翻译语言列表. ?为此,我想在我的视图中返回可用语言的verse模型文件中建立关系,那么如何在视图中获得结果.如果发生任何变化,那么对于模型,视图和控制器会有什么变化.
我编写了MySQL查询,如下所示.
SELECT language.language_name from language
Inner Join verse_translations ON verse_translations.language_id = language.id
Where verse_translations.verse_id = 1
但我在Yii中需要这个.
我通过gii代码生成器生成了诗歌模型.
我的诗歌模型关系功能.
public function relations()
{
return array(
'sorah' => array(self::BELONGS_TO, 'Sorah', 'sorah_id'),
'topic' => array(self::BELONGS_TO, 'Topic', 'topic_id'),
'verseFeedbacks' => array(self::HAS_MANY, 'VerseFeedback', 'verse_id'),
'verseImages' => array(self::HAS_MANY, 'VerseImages', 'verse_id'),
'verseLinks' => array(self::HAS_MANY, 'VerseLinks', 'verse_id'),
'verseTafseers' => array(self::HAS_MANY, 'VerseTafseer', 'verse_id'),
'verseTranslations' => array(self::HAS_MANY, 'VerseTranslations', 'verse_id'),
'language_name' => array(self::HAS_MANY, 'Language', 'id'),
);
}
解决方法:
我给你写了你的sql代码,
$result = Yii::app()->db->createCommand()
->select('l.language_name')
->from('language l')
->join('verse_translations vt' , 'l.id = vt.language_id ')
->join('verse v' , 'vt.id = v.id')
->where('v.id = :var' , array(':var'=>1))
->queryAll();
顺便说一句我没看完你的所有帖子,只读你的sql:D
更新:如果在生成模型文件之前在mysql中定义关系,则会获得为您生成的关系.这是最简单的方法,然后您可以这样做:
$vers = Ver::model()->findByPk(1);
$allLangs = $vers->language_name; // this will give you an array of Language Model back
让我知道做了什么
干杯
内容总结
以上是互联网集市为您收集整理的php – 如何从yii中的连接关系中获取数据全部内容,希望文章能够帮你解决php – 如何从yii中的连接关系中获取数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。