gpt4 book ai didi

php - RedBean 是否需要 "id"主键?

转载 作者:可可西里 更新时间:2023-11-01 12:47:07 24 4
gpt4 key购买 nike

如果您使用 RedBean ORM,你需要给数据库中的每张表添加一个名为“id”的主键吗?

在我的数据库中,我有一些表有 2 或 3 个字段的主键对,或者主键的名称不是“id”(是的,我可以将名称更改为“id”,但它不会真正反射(reflect)现实,因为它们不是 ID)

示例:

table1 - 存储帖子:

  id           INTEGER      PRIMARY KEY AUTOINCREMENT,
name TEXT,
title TEXT,
content TEXT,

table2 - 存储帖子的元数据:

  post         INTEGER      DEFAULT 0,     # <- references "id" from "posts"
name TEXT,
value TEXT,
PRIMARY KEY(name, post),
CONSTRAINT posts_meta FOREIGN KEY(post)
REFERENCES posts(id) ON DELETE CASCADE ON UPDATE RESTRICT

RedBean 可以使用这种数据库结构吗?

最佳答案

不幸的是,根据您当前的表结构,您无法使用 RedBean。每个表都需要有一个自增主键。轻微的失败,因为它使集成到现有产品中变得更加困难。

由于此限制,一些线程未能使用 RedBean,作者 Gabor De Mooij 的回复:

http://groups.google.com/group/redbeanorm/browse_thread/thread/6d5582275326744f?pli=1

http://groups.google.com/group/redbeanorm/browse_thread/thread/4fa7b29b453dcdb8

但是,RedBean 不要求主键字段简单地命名为“id”。您可以使用 formatBeanID() 方法根据自己的喜好格式化主键列的名称,如下例所示,它有条件地将表名作为前缀添加到“id”。例如)表 users 的主键是 users_id。使用该格式,您可以根据需要获得 ID 名称的详细信息。

http://redbeanphp.com/community/wiki/index.php/Prefixes

希望这种限制在未来会被取消,因为它确实阻碍了与现有产品的集成。

编辑: 作为替代 ORM,我听说过 Doctrine:http://www.doctrine-project.org/ .我没有亲自使用过它,但它似乎是许多使用 PHP 的人的标准。

编辑 2:感谢并感谢 Jason 提请注意一种将 RedBean 集成到现有项目中的新方法,您的数据库可能没有为此设置。我也想更新我的答案,以防人们仍然引用这个问题。 Gabor 建议创建映射到表的 View ,您可以在其中设置 View 以具有 RedBean 所需的正确结构。我没有亲自测试过这个,但它已经从一些用户那里得到了积极的反馈。它在更改表时增加了一些额外的开销和维护,但似乎是迄今为止对此问题的最佳和最完整的答案。 http://www.redbeanphp.com/faq#beanformatter

关于php - RedBean 是否需要 "id"主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9554787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com