RedBeanPHP中具有两列主键的表
Posted
技术标签:
【中文标题】RedBeanPHP中具有两列主键的表【英文标题】:Table with two column primary key in RedBeanPHP 【发布时间】:2013-10-10 07:44:24 【问题描述】:我正在使用下表:
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 问题,但我找不到任何关于这个案例的答案。
感谢您的帮助!
【问题讨论】:
【参考方案1】:首先,你不能像你提到的那样做,因为 RedBean 要求每个表都有一个名为 id (小写)的列是自动增量和主键。看看schema documentation。
接下来,即使它会起作用,我也不建议这样做,因为您将修订包含在同一个表中违反了数据库规范化原则。大多数时候,您只需要最新版本,但将它们全部放在同一个表中只会使您的查询膨胀。因此,我建议您尝试像我的Redbean ReBean module 中描述的解决方案。它使用单独的表进行修订以及通过触发器自动创建。
【讨论】:
以上是关于RedBeanPHP中具有两列主键的表的主要内容,如果未能解决你的问题,请参考以下文章
将数据插入具有主键的表(多列)中,该表具有除主键以外的数据的另一个数据