gpt4 book ai didi

具有完全复合主键/外键支持的 PHP ORM

转载 作者:可可西里 更新时间:2023-11-01 13:23:31 29 4
gpt4 key购买 nike

我正在寻找完全支持基于复合主键和外键的复合(多列)关系的 PHP5 ORM。

我希望 Doctrine 2 能解决这个问题,但事实并非如此。这是关系数据建模中的一项基本功能,但我所知道的 PHP ORM 软件都不支持它。

我最近发现 SQLAlchemy 有完整的支持,但我需要一些用于 PHP 而不是 Python 的东西。

最佳答案

当您从数据库的角度处理应用程序时,诸如 Doctrine2 (PHP) 或 Hibernate (Java) 之类的“派生”应用程序是不合适的。当您想反过来时,这些更适合(即“我有一个 OO 域模型并需要将其保存在关系数据库中”,而不是“我有一个关系数据库并想要一个(生成的?)OO 接口(interface)为此,无需在数据库方面做出任何妥协”)。如果尽管在方法上存在这些重要差异,但你仍然使用它们,并且你更喜欢你的关系模式而不是你的对象模型,你只会感到沮丧。

区分不同类别的 ORM 工具非常重要,因为它们往往侧重于不同的开发模型。

也许试试 Propel 或 RedBeanPHP,它们似乎适合数据库驱动的开发模型,几乎没有映射,只是简单生成的(通常是愚蠢的)“数据对象”,没有太多抽象。外键字段直接放入这些解决方案等的对象中,因此它们可能“支持”您想要的所有复合内容。

像 Doctrine2 或 Hibernate 这样的解决方案不鼓励使用复合键,因此只在一定程度上支持它们(Hibernate 做得很远,但不建议使用它们)。

就我个人而言,我不喜欢复合键(除了没有附加数据的纯多对多链接表),因为我更倾向于从应用程序/域模型/对象方面处理事情,并且映射到对象的复合键通常很难使用,即使底层映射技术支持它们也是如此。代理键(或至少是单字段自然键)使事情变得简单得多。我不是关系数据库规范化迷信者,从我的角度来看,“更好的性能”是非常值得怀疑的。如果您在系统中遇到真正的性能问题,则偶尔保存连接并不能挽救您。

关于具有完全复合主键/外键支持的 PHP ORM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4119657/

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