Skip to content

Instantly share code, notes, and snippets.

@pourquoi
Created July 1, 2014 11:51
Show Gist options
  • Save pourquoi/dc716d021f1f5cf86577 to your computer and use it in GitHub Desktop.
Save pourquoi/dc716d021f1f5cf86577 to your computer and use it in GitHub Desktop.
doctrine extensions run.php reproducing bug #990
<?php
use Doctrine\ORM\Query;
use Gedmo\Translatable\TranslatableListener;
$executionStart = microtime(true);
$memoryStart = memory_get_usage(true);
$em = include 'em.php';
/**
* initialized in em.php
*
* Gedmo\Translatable\TranslationListener
*/
$translatable;
$repository = $em->getRepository('Entity\Category');
$food = $repository->findOneByTitle('Food');
if (!$food) {
// lets create some categories
$food = new Entity\Category;
$food->setTitle('Food');
$food->addTranslation(new Entity\CategoryTranslation('lt', 'title', 'Maistas'));
$fruits = new Entity\Category;
$fruits->setParent($food);
$fruits->setTitle('Fruits');
$fruits->addTranslation(new Entity\CategoryTranslation('lt', 'title', 'Vaisiai'));
$apple = new Entity\Category;
$apple->setParent($fruits);
$apple->setTitle('Apple');
$apple->addTranslation(new Entity\CategoryTranslation('lt', 'title', 'Obuolys'));
$milk = new Entity\Category;
$milk->setParent($food);
$milk->setTitle('Milk');
$milk->addTranslation(new Entity\CategoryTranslation('lt', 'title', 'Pienas'));
$em->persist($food);
$em->persist($milk);
$em->persist($fruits);
$em->persist($apple);
$em->flush();
}
// create query to fetch tree nodes
/** @var \Doctrine\ORM\Query $query */
$query = $em
->createQueryBuilder()
->select('node')
->from('Entity\Category', 'node')
//->orderBy('node.root, node.lft', 'ASC')
->getQuery()
;
// set hint to translate nodes
$query->setHint(
Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER,
'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker'
);
$query->setHint(TranslatableListener::HINT_TRANSLATABLE_LOCALE, 'lt');
$query->setHint(TranslatableListener::HINT_FALLBACK, 0);
$query->useQueryCache(true);
$query->setQueryCacheLifetime(30);
$treeDecorationOptions = array(
'decorate' => true,
'rootOpen' => '',
'rootClose' => '',
'childOpen' => '',
'childClose' => '',
'nodeDecorator' => function($node) {
return str_repeat('-', $node['level']).$node['title'].PHP_EOL;
}
);
$results = $query->getResult();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment