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中具有两列主键的表的主要内容,如果未能解决你的问题,请参考以下文章

将数据插入具有主键的表(多列)中,该表具有除主键以外的数据的另一个数据

Android Room - 如何在每个应用程序运行时重置自动生成的表主键

oracle怎么查询所有的表有没有主键

在 PetaPoco 中,如何装饰具有多列主键的表

如何在mysql中获取所有具有自动增量主键的表?

如何在具有symfony主键的表中插入值