1

嗨,我有这两个表,我想在 Yii 中使用关系加入,问题是我很难弄清楚 Yii 关系是如何工作的。

picturepost
    id
    title
    link_stat_id

linkstat
    id
    link
    post_count

我也有一个有效的 SQL 查询。当我想获取图片时,这是我希望我与结果的关系的查询

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;

提前谢谢我希望我解释清楚。

4

2 回答 2

0
public function relations()
{
   return array(
     'linkstat' => array(self::HAS_ONE, 'Linkstat', array('link_stat_id'=>'link')),
   );
}

更多关于yii 的关系

这假设您有一个活动记录模型 Linkstat,它表示表 linkstat 中的数据。

于 2013-12-01T00:43:03.230 回答
0

有一些关于这个的教程,我不会重复它们,但敦促你检查它们。

最简单的起点是在数据库中创建外键约束,然后使用 Gii 工具为模型生成代码,在本例中为表picturepost

这应该会产生一个带有方法关系()的类 Picturepost,

class Picturepost extends  {

public function relations()
{
   return array(
     'picturepost_linkstats' => array(self::HAS_MANY, 
                                 'linkstat', 'link_stat_id'),
   );
}

这使用 *link_stat_id* 字段作为外键链接 2 个表(链接表的主键)。

在查询表picturepost时,可以自动拉入linkstat记录。

// Get the picturepost entry
$picturepost = PicturePost::model()->findByPk(1);

// picturepost_linkstats is the relationship name
$linkstats_records =  $picturepost->picturepost_linkstats;
于 2013-11-30T19:02:37.540 回答