class ForceIndexWalker extends SqlWalker
{ public const HINT_FORCE_INDEX = 'ForceIndexWalker.ForceIndex';
public const HINT_STRAIGHT_JOIN = 'StraightJoinWalker.StraightJoin';
public const HINT_SQL_NO_CACHE = 'SqlNoCacheWalker.SqlNoCache';
public function walkSelectClause($selectClause) { $sql = parent::
walkSelectClause($selectClause);
if ($this->
getQuery()->
getHint(self::HINT_SQL_NO_CACHE
) === true
) { if ($selectClause->isDistinct
) { $sql =
str_replace('SELECT DISTINCT', 'SELECT DISTINCT SQL_NO_CACHE',
$sql);
} else { $sql =
str_replace('SELECT', 'SELECT SQL_NO_CACHE ',
$sql);
} } if ($this->
getQuery()->
getHint(self::HINT_STRAIGHT_JOIN
) === true
) { $sql =
str_replace('SELECT', 'SELECT STRAIGHT_JOIN ',
$sql);
}