首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为了可维护性而抽象连接?

为了可维护性而抽象连接?
EN

Stack Overflow用户
提问于 2010-11-10 03:59:53
回答 1查看 43关注 0票数 1

有谁知道可以抽象连接的ORM吗?我使用的是PHP,但我会从任何地方获取想法。我使用过Doctrine ORM,但我不确定它是否支持这个概念。

我希望能够指定一个实际上是复杂查询的关系,然后在其他查询中使用该关系。这主要是为了可维护性,所以如果我的模式发生变化,我没有太多必须更改的重复代码。这在理论上是可能的吗(至少对于“复杂查询”的某些子集是可能的)?

下面是我正在讨论的一个例子:

代码语言:javascript
复制
ORM.defineRelationship('Message->Unresponded', '
  LEFT JOIN Message_Response
    ON Message.id = Message_Response.Message_id
  LEFT JOIN Message AS Response
    ON Message_Response.Response_id = Response.id
  WHERE Response.id IS NULL
');

ORM.query('
  SELECT * FROM Message
  SUPER_JOIN Unresponded
');

对于纯粹虚构的语法,我很抱歉。我不知道有没有这样的东西存在。如果是这样的话,情况肯定会很复杂。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-10 04:04:01

一种可能是将此连接编写为数据库中的视图。然后,您可以在视图上使用任何查询工具。

Microsofts Entity Framework还支持代码实体和数据库表之间非常复杂的映射,甚至跨数据库。在从表连接到实体的映射方面,您给出的示例查询很容易得到支持。然后,可以使用LINQ对生成的联接数据执行进一步查询。当然,如果您使用的是PHP,这可能不会对您有很大的用处。

但是,我不知道有哪种产品能像您所展示的那样,将连接封装到进一步查询的语法中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4137942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档