RedBeanPHP中具有两列主键的表

时间:2013-10-10 07:44:24

标签: php mysql sql orm redbean

我正在使用下表:

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 =?,还要修改=?这不行。

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

谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

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

接下来即使它可以工作,我也不建议这样做,因为你通过在同一个表中包含修订来违反DB规范化原则。大多数情况下,您只需要最新版本,但将所有这些版本保留在同一个表中只会让您的查询膨胀。所以我建议尝试一下我Redbean ReBean module中描述的解决方案。它使用单独的表进行修订,并通过触发器自动创建。