在执行之前,学说修改查询



我有一个使用pdo_mysql作为学说驱动程序与数据库进行通信的网站,一切都很好。

现在,我正在尝试使用sqlite作为数据库驱动程序为我的存储库和类编写功能单元测试。但是我的一个查询是使用USE INDEX(index),看起来sqlite不喜欢该语法。

是否有一种方法可以修改所有查询以在sqlite进行执行之前从查询中删除USE INDEX(...)字符串?

,所以我想我可以回答自己的问题。

我创建一个自定义连接类,从默认连接延伸,然后覆盖executeQuery()函数

class TestConnection extends Connection {
    public function executeQuery($query, array $params = array(), $types = array(), QueryCacheProfile $qcp = null)
    {
        $query1 = preg_replace('/USE INDEX(S+)/', '', $query);
        return parent::executeQuery($query1, $params, $types, $qcp);
    }
}

然后定义参数以创建SQLite连接,例如此

    private $dbParams = [
    'driver' => 'pdo_sqlite',
    'memory' => true,
    'wrapperClass' => 'SgTestDatabaseTestConnection'
];

,所有查询在执行之前都会更改

相关内容

  • 没有找到相关文章

最新更新