【发布时间】:2014-06-17 16:01:00
【问题描述】:
您好,
我真的很想听听您对这个应用程序设计的广泛了解!
我是 Phalcon 的新手,现在正在使用它构建我的第一个基于 MySQL 和 RESTful-API 的应用程序,但在此过程中遇到了一些挑战。
首先,关于我的应用程序设计,概念如下: 作为应用程序核心的 API,由使用它的页面和视图的“UI 外壳”包装。 API 应该由一组代表数据库和业务逻辑的 Phalcon 模型组成,在它们之上,一个组件充当使这些模型可作为“HTTP 服务”访问的层 - 通常通过将请求转换为模型名称,以及相应模型操作的 HTTP 动词(例如:GET => $account->find()/findFirst()、PUT => $account->update([params]) 等.).
我确信 Phalcon 模型会让我不必编写大部分 SQL,但是很快我就遇到了一些非常常见的场景,这些模型无法按照我的预期方式处理:
-
例如,您有消息之类的实体,并且您希望使用其他一些相关实体的列(例如拥有这些消息的用户的名字)来查询它们。模型无法在单个操作中完成此操作。
-
我想显示一个消息列表,每条消息都附有发送它的用户的详细信息。在 Phalcon 中,想到的第一个想法是利用模型关系功能,但进一步思考我开始意识到将对每条呈现的消息执行完整查询,这在性能方面是灾难性的,而不是全部检索它们连同他们的用户详细信息一起出现在某个单一的 JOINed 查询中。
-
我想显示一个用户列表,每个用户都有一个总消息数。除了包含 COUNT() 字段和 GROUP BY 或子查询的完整查询之外,找不到其他方法来实现这一点。
我尝试查找此类用例和其他用例,其中大多数似乎没有任何优雅的解决方案。
重点:
我想要实现的是一种基于 API 的架构,该架构有意义、可扩展且易于根据实际场景进行定制(能够处理如上所示的明显情况)。
你会在 Phalcon 做什么来处理我遇到的问题?
您如何看待我采用的设计理念?是不是有点标准和有意义?
最重要的是,如果有的话,您将如何设计一个完整且灵活的 API,而不需要到处重复繁琐的 SQL 查询? 您是否有任何已知公司在这方面的方法的参考或示例?
这是一个大问题,任何帮助都会很大! 谢谢! 多尔。
【问题讨论】:
标签: php database orm phalcon restful-architecture