lui*_*7up 9 php dao design-patterns
我在PHP中使用DAO模式.我理解以这种方式分离模型所带来的好处,但我不明白的是,当表通过关联实体关联时,您应该如何构建DAO和VO?
我举个例子:
在我的数据库中我有
USERS(id,username);
USERS_POSTS(id_user(FK),id_post(FK));
POSTS(id, title);
USER_COMMENTS(id_user(Fk),id_post(FK));
COMMENTS(id, text);
Run Code Online (Sandbox Code Playgroud)
我使用相应的setter和getter 创建UserVO,PostVO,然后负责最终返回VO的SQL的UserDAO和PostDAO.对来自这些表的数据执行CRUD操作非常简单,但是当您开始考虑关联表并检索跨不同表的数据时,您开始认为使用DAO不再那么简单了......
如果您想要返回文章作者的所有评论,您将如何组织DAO模式?我不需要SQL查询我只是将此作为实际情况的一个例子...
我读到,为每个关联表提供关联DAO和Vo是个好主意.它的VO会包含什么?只有2个外键或来自两个表的所有属性?
如果逻辑具有关联实体的DAO和VO,那么如果查询"通过"多于3个表(使用2个关联实体),那么解决方案是什么?
我怀疑DAO模式会有一个名为users_posts_comments_article的对象:)))
谢谢
作为你自己,你想要获取什么样的数据并编写一个提供该数据的层。不要考虑如何称呼连接两个以上表的类。您正在考虑将表格转变为模型,但您可能正朝着不适合您的项目的方向前进。由于我不知道你的项目有多大,所以我不能说这是否可以。
以下内容肯定会给您带来一些思考:http://weierophinney.net/matthew/archives/202-Model-Infrastruct.html
引用那篇文章(他指的是领域模型):
当您用这些术语思考时,您开始将系统分解为需要操作的离散部分,并考虑每个部分如何与其他部分相关。这种类型的练习还可以帮助您停止从数据库表的角度思考您的模型;相反,您的数据库成为容器,数据从模型的一次使用到下一次使用都被保存在其中。相反,您的模型是一个对象,可以使用传入或存储的数据执行操作,甚至可以完全自主地执行操作。