【问题标题】:PHP PDO Add filter to all queriesPHP PDO 为所有查询添加过滤器
【发布时间】:2016-01-18 03:02:38
【问题描述】:

有没有办法,使用 JUST PHP PDO(无 ORM)来全局过滤所有 fetch/insert/update/delete 操作。

一个示例是租户字段(在多租户数据库中)。我想将这种类型的过滤器全局添加到所有操作中:

租户 = companyA

再一次。没有 ORM,我已经知道如何使用 Laravel 雄辩的 SQL Alquemy 和 Doctrine 来做到这一点。我现在想知道是否可以仅使用 PDO。

【问题讨论】:

  • 您基本上是想自动将WHERE tenant= 'companyA' 添加到所有查询中吗?您可能可以扩展 PDO 并覆盖一些方法,使用 SQL 解析器或其他东西并根据自己的喜好修改查询。
  • 是的,这是我的想法,但我必须覆盖/扩展什么? :)
  • @MauricioLopez 您只需要扩展 PDO 并编写自己的函数,例如 find()、findAll()、persist()...

标签: php mysql pdo filter


【解决方案1】:

创建一个扩展 PDO 的类

class DB extends PDO {...

通常我会覆盖__construct() 方法来获取任何文档中的数据库凭据并连接到数据库,不要忘记在此方法的底部调用父构造函数parent::__construct()...

那你就可以用自己的方法了

public function find($params) {
     ...
     $stmt = $this->prepare('')...

     $rows = $stmt->fetch(PDO::FETCH_ASSOC)...
}

在您自己的方法中,您可以应用您的过滤器...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2018-02-17
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多