有谁知道可以抽象连接的ORM吗?我使用的是PHP,但我会从任何地方获取想法。我使用过Doctrine ORM,但我不确定它是否支持这个概念。
我希望能够指定一个实际上是复杂查询的关系,然后在其他查询中使用该关系。这主要是为了可维护性,所以如果我的模式发生变化,我没有太多必须更改的重复代码。这在理论上是可能的吗(至少对于“复杂查询”的某些子集是可能的)?
下面是我正在讨论的一个例子:
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
');对于纯粹虚构的语法,我很抱歉。我不知道有没有这样的东西存在。如果是这样的话,情况肯定会很复杂。
发布于 2010-11-10 04:04:01
一种可能是将此连接编写为数据库中的视图。然后,您可以在视图上使用任何查询工具。
Microsofts Entity Framework还支持代码实体和数据库表之间非常复杂的映射,甚至跨数据库。在从表连接到实体的映射方面,您给出的示例查询很容易得到支持。然后,可以使用LINQ对生成的联接数据执行进一步查询。当然,如果您使用的是PHP,这可能不会对您有很大的用处。
但是,我不知道有哪种产品能像您所展示的那样,将连接封装到进一步查询的语法中。
https://stackoverflow.com/questions/4137942
复制相似问题