如何设计类来处理有多个表的数据库查询?

问题描述:

我只想在这里提出一些讨论。这个问题对我来说是因为我需要重构一些混乱的代码。如何设计类来处理有多个表的数据库查询?

通常,在Web应用程序中,MVC是该架构最常见的模式。现在,我想专注于模块化部分。例如:我在设计中遵循article。对于每个数据库表,我有一个VO类和它的DAO类。它适用于一个表中的简单查询。但是,还有很多其他情况,某些查询需要几个表,例如:查询类似于“INSERT INTO TABLEB SELECT * FROM TABLEB”等。我处理这种查询的策略是:我有一个DB类,例如:像PHP中的mysqli,直接使用它的mysqli :: query。有时候它可以正常工作,但是有时查询会变得很长,我认为代码是不可维护的。 就像它在文章中所说的那样,我可能需要为n对n关系查询创建另一个类,但是为跨多个表的任何查询创建一个类太方便了。我只是不知道这里的粒度。有什么建议么?谢谢!

一个好的提示可以使用活动记录,结合MVC和你有一个强大的框架。 (即使不是所有的Web框架都使用它)。

如果不是,请尝试在模型之间建立“关系”,并为每个模型使用insert(),get()函数。

例如:

$article->get(); 
$article->category->get(); 

第一“获得()”将是一个查询(使用数据库类)选择这个特定的文章,而第二个“获得()”将是一个查询根据“articles”表中的字段“category_id”选择具有某个id的类别。