tugmaks / doctrine-walkers
Set of doctrine walkers
2.2
2025-06-18 04:02 UTC
Requires
- php: ^8.2
- doctrine/dbal: ^4.0
- doctrine/orm: ^3.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.47
- ergebnis/php-cs-fixer-config: ^6.46
- friendsofphp/php-cs-fixer: ^3.75
- icanhazstring/composer-unused: ^0.9
- phpstan/phpstan: ^2.1
- phpstan/phpstan-doctrine: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpunit/phpunit: ^11.5
- rector/rector: ^2.0
README
Doctrine walkers
Installation
composer require tugmaks/doctrine-walkers
Locking walker
Example
$query = $this->entityManager->createQuery('SELECT u FROM App\Entity\User u WHERE id = 1'); $query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, LockingWalker::class); $query->setHint(LockingWalker::LOCKING_CLAUSE, new LockingClause(LockStrength::UPDATE, Option::SKIP_LOCKED)); $query->getSQL();
Output:
SELECT u0_.id AS id_0, u0_.name AS name_1 FROM users u0_ WHERE u0_.id = 1 FOR UPDATE SKIP LOCKED
NULLS walker
Example
$query = $this->entityManager->createQuery('SELECT u FROM App\Entity\User u ORDER BY u.name DESC'); $query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, NullsWalker::class); $query->setHint(NullsWalkers::NULLS_RULE, ['u.name' => NULLS::LAST]); $query->getSQL();
Output:
SELECT u0_.id AS id_0, u0_.name AS name_1 FROM users u0_ ORDER BY u0_.name DESC NULLS LAST
Tablesample walker
Example
$query = $this->entityManager->createQuery('SELECT u FROM App\Entity\User u ORDER BY u.name DESC'); $query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, TablesampleWalker::class); $query->setHint(TablesampleWalker::TABLESAMPLE_RULE, [User::class => new Tablesample(TablesampleMethod::BERNOULLI, 0.1) ]); $query->getSQL();
Output:
SELECT u0_.id AS id_0, u0_.name AS name_1 FROM users u0_ TABLESAMPLE BERNOULLI(0.1) ORDER BY u0_.name DESC
WITH TIES
walker
Example
$query = $this->entityManager->createQuery('SELECT u FROM App\Entity\User u ORDER BY u.name DESC')->setMaxResults(5); $query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, WithTiesWalker::class); $query->getSQL();
Output:
SELECT u0_.id AS id_0, u0_.name AS name_1 FROM users u0_ ORDER BY u0_.name DESC FETCH NEXT 5 ROWS WITH TIES