【发布时间】:2013-05-29 18:50:49
【问题描述】:
我的 PHP 类中有这个查询:
$this->query = "SELECT a.x, b.y, c.z FROM aaa a INNER JOIN bbb b ON b.ida = a.ida ";
$this->query.= "INNER JOIN ccc c ON c.idb = b.idb WHERE a.ida = :ida";
$this->stmtparam = array(':ida' => $this->ida);
return parent::fillArray(); // it fills a PDO FETCH_ASSOC array and returns it as JSON
假设这是一个复杂 10 倍的查询,而我在公司信息系统中有很多这样的查询;
我的问题是:是否可以在 postqresql 中创建一个存储函数,它执行相同的操作并返回许多表的 SET,然后将结果获取到 php 中的关联数组中?
这样做值得吗?
【问题讨论】:
-
这取决于所有这一切实际上应该做什么,但我会说,如果这是执行任何类型的逻辑,通常建议将此逻辑排除在数据存储层之外,并在应用程序代码中。
-
所以,假设我要返回 t_employee 名称、t_city ID、t_emp_salary 工资、t_department 名称、t_department_manager 名称 WHERE 员工在 2013-01-01 工作的地方,你会说这个是“逻辑”案例,还是放在应用层比较好?
-
@Pudge601 取决于它的逻辑,最好将其保留在实际查询中,例如,如果您存储二进制但想要检索十六进制值。
-
@GriffLab,是的,这是您希望在查询中保留该逻辑的一个很好的例子;也许我应该将“逻辑”改写为“业务逻辑”或“应用程序逻辑”
-
谢谢,这很有帮助。
标签: php postgresql stored-procedures pdo