我正在使用下表:
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问题,但我找不到这个案例的答案。
谢谢你的帮助!
答案 0 :(得分:1)
首先,你不能像你提到的那样做,因为RedBean要求每个表都有一个名为id(lowerCase)的列是自动增量和主键。看看schema documentation。
接下来即使它可以工作,我也不建议这样做,因为你通过在同一个表中包含修订来违反DB规范化原则。大多数情况下,您只需要最新版本,但将所有这些版本保留在同一个表中只会让您的查询膨胀。所以我建议尝试一下我Redbean ReBean module中描述的解决方案。它使用单独的表进行修订,并通过触发器自动创建。