<?php use Doctrine\ORM\Mapping as ORM; use Knp\DoctrineBehaviors\ORM as ORMBehaviors; /** * @ORM\Entity */ class Category { use ORMBehaviors\Timestampable\Timestampable; /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="NONE") */ protected $id; }
<?php $category = new Category; $entityManager->persist($category); $category->getCreatedAt(); $category->getUpdatedAt();
{ "require": { "knplabs/doctrine-behaviors": "dev-master", } }
curl -s http://getcomposer.org/installer | php php composer.phar install
# app/config/config.yml imports: - { resource: ../../vendor/knplabs/doctrine-behaviors/config/orm-services.yml }
<?php use Doctrine\ORM\Mapping as ORM; use Knp\DoctrineBehaviors\ORM as ORMBehaviors; /** * @ORM\Entity */ class Category { use ORMBehaviors\Translatable\Translatable; /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="NONE") */ protected $id; }
<?php use Doctrine\ORM\Mapping as ORM; use Knp\DoctrineBehaviors\ORM as ORMBehaviors; /** * @ORM\Entity */ class CategoryTranslation { use ORMBehaviors\Translatable\Translation; /** * @ORM\Column(type="string") */ protected $name; }
<?php $category = new Category; $category->translate('ru')->setName(''); $category->translate('en')->setName('Shoes'); $em->persist($category); $category->translate('en')->getName();
| id | name | path | +-----+------------+------------+ | 1 | fr | /1 | | 2 | villes | /1/2 | | 4 | subNantes | /1/2/3/4 | | 7 | en | /7 | | 8 | villes | /7/8 | | 9 | Nantes | /7/8/9 | | 10 | subNantes | /7/8/9/10 | | 11 | Lorient | /7/8/11 | | 12 | Rouen | /7/8/12 | | 6 | Rouen | /1/2/6 | | 3 | Nantes | /1/2/3 | | 5 | Lorient | /1/2/5 |
<?php use Doctrine\ORM\Mapping as ORM; use Knp\DoctrineBehaviors\ORM as ORMBehaviors; /** * @ORM\Entity(repositoryClass="CategoryRepository") */ class Category { use ORMBehaviors\Tree\Node; /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="NONE") */ protected $id; }
<?php use Doctrine\ORM\EntityRepository; use Knp\DoctrineBehaviors\ORM as ORMBehaviors; class CategoryRepository extends EntityRepository { use ORMBehaviors\Tree\Tree; }
$root = $em->getRepository('Category')->getTree(); $root->getParentNode(); $root->getChildren(); $root[0][1]; // array access of children $root->isLeafNode(); $root->isRootNode();
Source: https://habr.com/ru/post/144802/
All Articles