php – RedBean是否需要“id”主键?
如果使用
RedBean ORM,是否需要向数据库中的每个表添加名为“id”的主键?
在我的数据库中,我有一些表具有2或3个字段的主键对,或者其他名称不是“id”的主键(是的,我可以将名称更改为“id”,但它不会真正反映出现实,因为他们不是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_id.使用该格式,您可以根据需要获取ID名称的详细信息. http://redbeanphp.com/community/wiki/index.php/Prefixes 希望这种限制将在未来解除,因为它确实妨碍了与现有产品的整合. 编辑:作为一个替代ORM,我听说过Doctrine:http://www.doctrine-project.org/.我没有亲自使用它,但它似乎是许多使用PHP的标准. 编辑2:感谢Jason提请注意一种将RedBean集成到现有项目中的新方法,在该项目中可能没有为其设置数据库.我想更新我的答案,以防人们仍然提到这个问题. Gabor建议制作映射到表的视图,您可以在其中设置视图以获得RedBean所需的正确结构.我没有亲自测试过,但它得到了一些用户的积极反馈.它在更改表时增加了一些额外的开销和维护,但似乎是迄今为止这个问题的最佳和最完整的答案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |