1

我正在使用下表:

CREATE TABLE `page` (
  `id` int(11) unsigned NOT NULL,
  `revision` float unsigned NOT NULL DEFAULT '1',
  `title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `alias` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `text` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `parameters` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`,`revision`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

是否可以在 RedBeanPHP 中使用两列主键?通常你会使用R::load('page', 1),但因为我不仅想要 id=?,还想要 revision=? 这是行不通的。

我已经阅读了文档和一些 Stack Overflow 问题,但我找不到任何关于这个案例的答案。

谢谢你的帮助!

4

1 回答 1

1

首先,不,你不能像你提到的那样做,因为 RedBean 要求每个表都有一个名为 id (lowerCase) 的列,该列是自动增量和主键。查看架构文档

接下来,即使它会起作用,我也不建议这样做,因为您将修订包含在同一个表中违反了数据库规范化原则。大多数时候,您只需要最新版本,但将它们全部放在同一个表中只会使您的查询膨胀。因此,我建议您尝试像我的Redbean ReBean 模块中描述的解决方案。它使用单独的表进行修订以及通过触发器自动创建。

于 2013-10-24T16:58:36.747 回答