lekarna / doctrine-extensions-tree
Implementation of Tree from DoctrineExtensions to Nette.
v4.2
2016-12-28 23:52 UTC
Requires
- php: ^7.0
- gedmo/doctrine-extensions: ~2.4
- nette/di: ~2.4
- nette/reflection: ^2.4
Requires (Dev)
- kdyby/doctrine: ~3.1
- nette/bootstrap: ~2.4
- phpunit/phpunit: ~5.6
- tracy/tracy: ~2.4
- zenify/coding-standard: ^4.0
README
Implementation of Tree from DoctrineExtensions to Nette.
Install
composer require zenify/doctrine-extensions-tree
Register extension:
# app/config/config.neon extensions: - Zenify\DoctrineExtensionsTree\DI\TreeExtension
Usage
For entity implementation, follow manual
Very simple entity could look like this:
namespace App\Entities; use Gedmo\Mapping\Annotation as Gedmo; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity(repositoryClass="App\Model\CategoryTree") * @Gedmo\Tree(type="materializedPath") */ class Category { /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue */ public $id; /** * @Gedmo\TreePathSource * @ORM\Column(type="string") * @var string */ private $name; /** * @Gedmo\TreeParent * @ORM\ManyToOne(targetEntity="Category", cascade={"persist"}) * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", nullable=TRUE) * @var Category */ private $parent; /** * @Gedmo\TreePath(separator="|") * @ORM\Column(type="string", nullable=TRUE) * @var string */ private $path; /** * @param string $name * @param Category $parent */ public function __construct($name, Category $parent = NULL) { $this->name = $name; $this->parent = $parent; } /** * @return string */ public function getName() { return $this->name; } /** * @return Category */ public function getParent() { return $this->parent; } /** * @return string */ public function getPath() { return $this->path; } }
And it's repository:
namespace App\Model; use Gedmo\Tree\Entity\Repository\MaterializedPathRepository; class CategoryTree extends MaterializedPathRepository { }
Testing
composer check-cs # see "scripts" section of composer.json for more details
vendor/bin/phpunit
Contributing
Rules are simple:
- new feature needs tests
- all tests must pass
- 1 feature per PR
We would be happy to merge your feature then!