gpt4 book ai didi

php - 将联接多个表的 SQL 查询放在哪里?

转载 作者:行者123 更新时间:2023-11-29 02:18:23 25 4
gpt4 key购买 nike

我正在使用 MVC 框架,并且有一个 photo SQL 表和一个 album SQL 表。 photo 表的查询放在 photoTableModel 类中,album 表的查询放在 albumTableModel 类中。

我应该在哪里放置同时使用这两个表的查询?

例如,下面的查询同时使用了这两个表。我是将查询放在 photoTableModelalbumTableModel 中,还是放在一个新的表模型中,或者甚至放在一个服务中?

SELECT `photo`.`id`
, `photo`.`name`
FROM `photo`
JOIN `album`
ON `album`.`album_id` = `photo`.`album_id`
AND `album`.`album_id` = 1
;

最佳答案

架构的中心是模型,而不是表。从语义上讲,这里描述或操作的是哪个模型?

似乎正在检索照片列表,其中一些相册信息包含在该列表的元素中。所以我怀疑这与Photo逻辑模型有关。因此,无论您将其放在您的架构和框架中的何处,它都应该在语义上与该模型相关。

您的框架如何定义事物取决于该框架,所以我真的不能更具体了。不同的框架以不同的方式做不同的事情。然而,一般来说,在 MVC 模式中,您希望围绕模型构建逻辑和体系结构。你从这个查询中得到的是一个照片列表(有一些额外的信息),所以它与照片模型有关。

模型可以是表的直接一对一表示。但它们不需要是。看起来你人为地限制你的模型就是这样,这导致了这个问题。也许您可以扩展 Photo 模型概念以包含相册信息?也许您创建了一个混合了两者的 DTO?也许您将 Album 属性添加到您的 Photo 模型?组织模型的方法有很多。重点是保持这些模型的语义清晰。模型表示领域概念(如Photo),而不是数据库表(如photoTableModel)。数据库表只是保存模型信息,以便稍后重新构建。因此,数据库是领域的边缘问题,而不是中心问题。

关于php - 将联接多个表的 SQL 查询放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35754161/

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