Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- declare(strict_types=1);
- namespace Application\Doctrine;
- use Doctrine\ORM\Query\SqlWalker;
- class UseIndexWalker extends SqlWalker
- {
- public const HINT_USE_INDEX = 'UseIndexWalker.UseIndex';
- public const HINT_FORCE_INDEX = 'UseIndexWalker.ForceIndex';
- public function walkFromClause($fromClause)
- {
- $sql = parent::walkFromClause($fromClause);
- if ('mysql' !== $this->getConnection()->getDatabasePlatform()->getName()) {
- return $sql;
- }
- if ($index = $this->getQuery()->getHint(self::HINT_USE_INDEX)) {
- return preg_replace('#(\bFROM\s*\w+\s*\w+)#', '\1 USE INDEX (' . $index . ')', $sql);
- }
- if ($index = $this->getQuery()->getHint(self::HINT_FORCE_INDEX)) {
- return preg_replace('#(\bFROM\s*\w+\s*\w+)#', '\1 FORCE INDEX (' . $index . ')', $sql);
- }
- return $sql;
- }
- }
Add Comment
Please, Sign In to add comment