我正在使用MVC框架并拥有photo
SQL表和album
SQL表。 photo
表的查询位于photoTableModel
类中,album
表的查询位于albumTableModel
类中。
我在哪里放置使用这两个表的查询?
例如,以下查询使用两个表。我是否将查询放在photoTableModel
,albumTableModel
,一个新的表格模型中,或者甚至是服务中?
SELECT `photo`.`id`
, `photo`.`name`
FROM `photo`
JOIN `album`
ON `album`.`album_id` = `photo`.`album_id`
AND `album`.`album_id` = 1
;
答案 0 :(得分:2)
架构的中心是模型,而不是表格。在语义上,在这里描述或操作哪个模型?
此出现以检索照片列表,其中一些相册信息包含在该列表的元素中。所以我怀疑这与Photo
逻辑模型有关。因此,只要将其置于架构和框架中,它就应该在语义上与该模型相关。
框架如何定义事物取决于该框架,所以我真的不能更具体。不同的框架以不同的方式做不同的事情。但是,一般而言,在MVC模式中,您希望围绕模型构建逻辑和体系结构。你从这个查询得到的是一张照片列表(带有一些额外的信息),所以它与照片模型有关。
模型可以是表的一对一表示。但他们并不需要。看起来你人为地限制你的模型正是如此,这导致了这个问题。也许你扩展Photo
模型概念以包含专辑信息?也许你创造了一个DTO,它是两者的混合体?也许您在Album
模型中添加Photo
属性?组织模型有很多方法。关键是要保持这些模型的语义。模型代表域概念(如Photo
),而非数据库表(如photoTableModel
)。数据库表只是保留模型信息以便稍后重新构建。因此,数据库是域的 edge 关注点,而不是中心域。