嗨我有这两个表,我想在Yii中使用关系加入,问题是我很难弄清楚Yii关系是如何工作的。
picturepost
id
title
link_stat_id
linkstat
id
link
post_count
我也有一个有效的SQL查询。当我想搜索 picturepost
时,这是我希望我的关系结果的查询SELECT picturepost.id, picturepost.title,linkstat.post_count
FROM picturepost
RIGHT JOIN linkstat
ON picturepost.link_stat_id=linkstat.link;
当我搜索帖子时,我想要这样的东西。
$post = PicturePost::model() -> findByPk($id);
echo $post->linkCount;
这是我的表格以获取额外信息:
CREATE TABLE IF NOT EXISTS `picturepost` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`title` text COLLATE utf8_unicode_ci DEFAULT NULL,
`link_stat_id` char(64) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM;
CREATE TABLE IF NOT EXISTS `linkstat` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`link` char(64) COLLATE utf8_unicode_ci NOT NULL,
`post_count` int(11) DEFAULT '0',
PRIMARY KEY (`id`),
KEY `post_count` (`post_count`),
KEY `link_stat_id` (`link`)
) ENGINE=InnoDB;
先谢谢,我希望我能清楚地解释清楚。
答案 0 :(得分:0)
有一些关于此的教程,我不会重复,但是请你检查一下。
最简单的起点是在数据库中创建外键约束,然后使用Gii工具生成模型的代码,在本例中为表 picturepost 。
这应该会产生一个带有方法relations(),
的Picturepostclass Picturepost extends {
public function relations()
{
return array(
'picturepost_linkstats' => array(self::HAS_MANY,
'linkstat', 'link_stat_id'),
);
}
这使用* link_stat_id *字段作为外键(链接表的主键)链接2个表。
当您查询表格图片时,您可以自动拉入linkstat记录。
// Get the picturepost entry
$picturepost = PicturePost::model()->findByPk(1);
// picturepost_linkstats is the relationship name
$linkstats_records = $picturepost->picturepost_linkstats;
答案 1 :(得分:0)
public function relations()
{
return array(
'linkstat' => array(self::HAS_ONE, 'Linkstat', array('link_stat_id'=>'link')),
);
}
更多关于yii relations。
这假设您有一个活动记录模型Linkstat,它表示表linkstat中的数据。