如何使用策略模式使用JOIN从两个或多个表中检索数据?

时间:2013-07-29 08:25:57

标签: php design-patterns strategy-pattern

我正在使用战略模式来实现一个大致如此的PHP项目。我一直在阅读this book作为制作设计模式的参考。

strategy pattern sample

我可以使用"插入","搜索","更新"从数据库进行简单的插入,更新或提取。 单个表上的具体策略类。

然而,对于像多个表的JOIN或VIEW这样的复杂查询,这些类是不够的。

如何创建一个允许我检索自定义编号的策略类。使用JOIN或VIEWs来自两个或多个表的列? 或者我应该使用存储过程吗?

目前,每个具体的策略类都如下所示:

interface IStrategy {

   public function algorithm(AbstractModel $modelObj, $tablename);

}

class InsertStrategy implements IStrategy{
   public function algorithm(AbstractModel $modelObj, $tablename){
      // construct SQL statement
      // Initialize the Database Object
      // Insert data using PDO
   }
}

1 个答案:

答案 0 :(得分:0)

我通常运行工厂业务应用程序的方法是避免使用“表API”方法并使用存储过程创建“数据API”。您也可以使用视图来支持您的SP。

因此,而不是CRUD,编写为您的业务层提供有用数据块的SP。完成您在SP中可以使用的所有过滤器,组,排序等,并获取PHP业务层来执行业务。您通常可以通过常用的数据访问层(或者想象中的ORM)访问所有SP。

在SP后面分离数据准备类似于将业务层隐藏在服务之后。所有原因和好处都叠加在一起。