caseSensitiveLike = $caseSensitiveLike; $this->journalMode = $journalMode; } /** * @param ConnectionEventArgs $args * @return void */ public function postConnect(ConnectionEventArgs $args) { $sensitive = $this->caseSensitiveLike ? 'true' : 'false'; $args->getConnection()->executeUpdate('PRAGMA case_sensitive_like = ' . $sensitive); $args->getConnection()->executeUpdate('PRAGMA journal_mode = ' . $this->journalMode); /** @var \Doctrine\DBAL\Driver\PDO\Connection $connection */ $connection = $args->getConnection()->getWrappedConnection(); $pdo = $connection->getWrappedConnection(); $pdo->sqliteCreateFunction('md5', 'md5', 1); // Unicode-aware LOWER for case-insensitive search (e.g. Cyrillic); SQLite's built-in LOWER only handles ASCII $pdo->sqliteCreateFunction('LOWER', static function ($s) { return mb_strtolower((string)$s, 'UTF-8'); }, 1); } public function getSubscribedEvents() { return [Events::postConnect]; } }