2016-11-23 5 views
0

Doctrineドライバとしてpdo_mysqlを使用してデータベースと通信するウェブサイトを持っていますが、すべて問題ありません。Doctrineは実行前にクエリを変更します

今私は、sqliteをデータベースドライバとして使用して、私のリポジトリとクラスの機能ユニットテストを作成しようとしています。しかし、私の1つのクエリはUSE INDEX(index)を使用しており、sqliteはその構文が嫌いです。

実行のためにsqliteに行く前に、すべてのクエリを変更してUSE INDEX(...)文字列をクエリから削除する方法はありますか?

+0

このhttps://gist.github.com/arnaud-lb/2704404が見つかりました(変更する必要があります) – Vamsi

+0

インデックスワーカーをクエリに追加するためのものですが、既にインデックスウォーカー – lightbringer

+0

ええを使用している既存のクエリで 'sqlite'を汎用的に削除したいと考えていました。カスタムウォーカーの作成 – Vamsi

答えて

0

私は自分の疑問に答えることができると思います。

私は、カスタム接続クラスを作成し、デフォルトの接続から延びており、この

private $dbParams = [ 
    'driver' => 'pdo_sqlite', 
    'memory' => true, 
    'wrapperClass' => 'Sg\Test\Database\TestConnection' 
]; 

などのsqliteの接続を作成するためのパラメータを定義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); 
    } 
} 

をオーバーライドして、すべてのクエリがあります実行前に変更されました

関連する問題