簡體   English   中英

Yii 使用模型中的關系連接兩個表

[英]Yii joining two table using relations in model

嗨,我想在 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;

預先感謝我希望我解釋清楚。

有一些關於此的教程,我不會重復它們,但敦促您查看它們。

最簡單的起點是在數據庫中創建外鍵約束,然后使用 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;
public function relations()
{
   return array(
     'linkstat' => array(self::HAS_ONE, 'Linkstat', array('link_stat_id'=>'link')),
   );
}

更多關於yii 關系

這假設您有一個活動記錄模型 Linkstat,它表示表 linkstat 中的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM