0

我想在 Yii 中实现类(多)表继承,但是我发现这很困难,所以我打算使用 MySQL 视图的方法。

这是我的表和类的示例:

CmsAd是一个表,它继承了CmsContent表中包含的所有字段:

CREATE TABLE `CmsAd` (
  `Id_CmsAd` varchar(32) NOT NULL,
  `Image` varchar(300) DEFAULT NULL,
  `Id_PrdClass` varchar(32) DEFAULT NULL,
  `Id_PrdCatalog` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`Id_CmsAd`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `CmsContent` (
  `Id_CmsContent` varchar(32) NOT NULL,
  `ModifiedBy` varchar(32) DEFAULT NULL,
  `ModifiedOn` datetime DEFAULT NULL,
  `CreatedBy` varchar(32) DEFAULT NULL,
  `CreatedOn` datetime DEFAULT NULL,
  `Status` varchar(99) DEFAULT NULL,
  `Subject` varchar(350) DEFAULT NULL,
  `Text` longtext,
  `KeyWord` varchar(300) DEFAULT NULL,
  `Code` varchar(340) DEFAULT NULL,
  PRIMARY KEY (`Id_CmsContent`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CmsAd_View是一个 MySQL 视图,包含这两个表的连接:

CREATE VIEW `CmsAd_View` AS SELECT `CmsAd`.*, `CmsContent`.* FROM `CmsAd` LEFT JOIN `CmsContent` ON `CmsContent`.`Id_CmsContent` = `CmsAd`.`Id_CmsAd`;

以下是这些表的型号:

class CmsAd extends CActiveRecord {

    public function tableName() {
        return 'CmsAd_View';
    }
}


class CmsContent extends CActiveRecord {

    public function tableName() {
        return 'CmsContent';
    }
}

注意 CmsAd 的表名视图CmsAd_View

现在我想实现 CRUD CmsAd。可以使用find()方法,因为它从视图CmsAd_View中检索。

我的问题是使用insert()update()方法,我们必须在其中插入和更新表CmsAdCmsContent

有没有人尝试在 Yii 中实现表继承的视图方法?

4

0 回答 0