forked from doctrine-extensions/DoctrineExtensions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun.php
80 lines (69 loc) · 2.33 KB
/
run.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?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
$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'
);
$treeDecorationOptions = array(
'decorate' => true,
'rootOpen' => '',
'rootClose' => '',
'childOpen' => '',
'childClose' => '',
'nodeDecorator' => function($node) {
return str_repeat('-', $node['level']).$node['title'].PHP_EOL;
}
);
// build tree in english
echo $repository->buildTree($query->getArrayResult(), $treeDecorationOptions).PHP_EOL.PHP_EOL;
// change locale
$query->setHint(TranslatableListener::HINT_TRANSLATABLE_LOCALE, 'lt');
// build tree in lithuanian
echo $repository->buildTree($query->getArrayResult(), $treeDecorationOptions).PHP_EOL.PHP_EOL;
$ms = round(microtime(true) - $executionStart, 4) * 1000;
$mem = round((memory_get_usage(true) - $memoryStart) / 1000000, 2);
echo "Execution took: {$ms} ms, memory consumed: {$mem} Mb";