- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果您使用 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/
我目前使用的是 RedBean 3.5 版。我想我想转移到最新版本的 RedBean,版本 4。 我没有找到关于升级过程的文档,只是表明它并不简单。 我的问题是: 我的 RedBean 3.5 数据库
我想使用一对多和多对多关系检索一些数据 我创建了名为 floor、shop、category 的 bean,并将它们关联为: floor 1:N shop floor N:M category sho
我正在使用 RedBean ORM。为了创建模式,我使用了标准的 redbean 插入数据的方法,以便 Redbean 自动适应模式以满足我的需要。我把它放在一个脚本中,当我需要初始化我的数据库时,它
我正在使用 RedBean 创建时间表应用程序。 这是(简化的)数据库结构: 所有者 编号 姓名 电子邮件 项目 编号 描述 owner_id 任务 编号 描述 项目编号 日志 编号 开始 结束 描述
我有一个从 Redbean 生成的名为“聚合”的表,包含这些列: id - INT(11) user_id - TINYINT(3) code - VARCHAR(255) sampl
多对多映射在redbean中很容易使用,场景简单。但是如何在同一个对象之间进行多个多对多映射? 例子: 我想要完成的是在结构上与“followers”和“following”的 twitter/ins
我今天来这里是因为我无法弄清楚我使用 RedbeanPHP 进行的交易有什么问题。我猜问题出在 MySQL 的“autocommit”值上,因为它始终处于打开状态。 长话短说: 1) R::freez
我在使用 RedBean 时遇到了一些问题。我收到连接错误,无法弄清楚是什么意思,我已经查看过 Google 并找不到任何有效的解决方案,我在这里尝试了一个类似的问题,但答案对这种情况并没有真正帮助.
或者我们可以这样做吗?当你说: $book = R::dispense('books'); 并使用 RedBean_IModelFormatter 处理命名还是我遗漏了什么? 谢谢。 最佳答案 你可以
我有以下结构 USER user_id name EVENT event_id user_id event_name 如何在redbean中编写inner join? SELECT * FR
我有三张 table USER user_id,name EVENT event_id, name,desc PARTICIPATION id, type 1 yes 2
我目前在我的模型中将 RedBean 用于 ORM。 我需要将数据插入到其中一列设置为唯一的 MySQL 表中。 目前,数据是通过这样的形式插入的: //Create $object = R::dis
我正在使用 RedBean PHP ORM 来尝试注册/获取用户。也就是说,给定一个逗号分隔列表,我做 $emails = explode(',', trim($app->request->post
我最近开始使用 Redbean PHP。所以我不太了解它是如何处理事情的。直到现在,我都喜欢它为我做东西是多么简单。但是我今天遇到了一个很大的问题。我需要将信用卡号存储到表中。但是一旦我存储了这个 b
我有两个 MySQL 表: user email 电子邮件表有一个来自用户的外键。我在用户表中插入一条记录并获取插入 ID,然后插入到电子邮件表中。 我在 RedBean 中是这样做的 $user =
我正在考虑使用 RedBean 作为 ORM 映射器。目前,我正在使用自己的实现,但随着项目变得越来越大和越来越复杂,效果不是很好。 然而,有一个问题我无法找到: 就有人注入(inject)代码/查询
我刚刚注意到,在使用 PHP 和 RedBean(以及一个事务)将一些数据导入 MySQL 数据库时,我可以看到在导入运行时行数在增加。为了证实我的怀疑,我在导入函数的末尾将 R::commit()
我正在使用 RedBean ORM 编写一些代码,我想知道我是否可以仅从数据库表中加载/检索某些字段。我知道有一个加载方法,但它将整个表作为 bean 提供。我希望只获取一些字段? 嘿,当我写它的时候
RedBeanPHP uses class naming convention将模型绑定(bind)到表上。我不能遵守该命名约定,因为我有一个表名不是一成不变的项目。我需要一种方法将 RedBean_
我有两个表,table1 和 table2,通过多对多连接。到目前为止没有问题,但我会因为在生产使用中使用下面的代码而导致服务器崩溃。访问多对多连接会生成非常多的查询。 是否有更好的方法来访问数据(无
我是一名优秀的程序员,十分优秀!