1. Go to this page and download the library: Download oasis/doctrine-addon library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
oasis / doctrine-addon example snippets
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Oasis\Mlib\Doctrine\AutoIdTrait;
use Oasis\Mlib\Doctrine\CascadeRemovableInterface;
use Oasis\Mlib\Doctrine\CascadeRemoveTrait;
/**
* Class Article
*
* @ORM\Entity()
* @ORM\Table(name="articles")
*
* @ORM\HasLifecycleCallbacks()
*/
class Article implements CascadeRemovableInterface
{
use CascadeRemoveTrait;
use AutoIdTrait;
/**
* @var Category
* @ORM\ManyToOne(targetEntity="Category", inversedBy="articles")
* @ORM\JoinColumn(onDelete="CASCADE")
*/
protected $category;
/**
* @var ArrayCollection
* @ORM\ManyToMany(targetEntity="Tag", inversedBy="articles")
* @ORM\JoinTable(name="article_tags",
* inverseJoinColumns={@ORM\JoinColumn(name="tag", referencedColumnName="id", onDelete="CASCADE")},
* joinColumns={@ORM\JoinColumn(name="`article`", referencedColumnName="id", onDelete="CASCADE")})
*/
protected $tags;
public function __construct()
{
$this->tags = new ArrayCollection();
}
function __toString()
{
return sprintf("Article #%s", $this->getId());
}
public function addTag(Tag $tag)
{
if (!$this->tags->contains($tag)) {
$this->tags->add($tag);
/** @noinspection PhpInternalEntityUsedInspection */
$tag->addArticle($this);
}
}
/**
* @return array an array of entities which will also be removed when the calling entity is remvoed
*/
public function getCascadeRemoveableEntities()
{
return [];
}
/**
* @return array an array of entities asscociated to the calling entity, which should be detached when calling
* entity is removed.
*/
public function getDirtyEntitiesOnInvalidation()
{
return $this->tags->toArray();
}
/**
* @return Category
*/
public function getCategory()
{
return $this->category;
}
/**
* @param Category $category
*/
public function setCategory($category)
{
if ($this->category == $category) {
return;
}
if ($this->category) {
/** @noinspection PhpInternalEntityUsedInspection */
$this->category->removeArticle($this);
}
$this->category = $category;
if ($category) {
/** @noinspection PhpInternalEntityUsedInspection */
$category->addArticle($this);
}
}
/**
* @return ArrayCollection
*/
public function getTags()
{
return $this->tags;
}
}
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Oasis\Mlib\Doctrine\AutoIdTrait;
use Oasis\Mlib\Doctrine\CascadeRemovableInterface;
use Oasis\Mlib\Doctrine\CascadeRemoveTrait;
/**
* Class Category
*
* @ORM\Entity()
* @ORM\Table(name="categories")
*
* @ORM\HasLifecycleCallbacks()
*/
class Category implements CascadeRemovableInterface
{
use CascadeRemoveTrait;
use AutoIdTrait;
/**
* @var ArrayCollection
* @ORM\OneToMany(targetEntity="Article", mappedBy="category")
*/
protected $articles;
/**
* @var Category
* @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
* @ORM\JoinColumn(onDelete="SET NULL");
*/
protected $parent;
/**
* @var ArrayCollection
* @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
*/
protected $children;
public function __construct()
{
$this->articles = new ArrayCollection();
$this->children = new ArrayCollection();
}
function __toString()
{
return '111';
}
/**
* @param Article $article
*
* @internal
*/
public function addArticle($article)
{
if (!$this->articles->contains($article)) {
$this->articles->add($article);
}
}
/**
* @param $child
*
* @internal
*/
public function addChild($child)
{
if (!$this->children->contains($child)) {
$this->children->add($child);
}
}
/**
* @param Article $article
*
* @internal
*/
public function removeArticle($article)
{
if ($this->articles->contains($article)) {
$this->articles->remove($article);
}
}
/**
* @param $child
*
* @internal
*/
public function removeChild($child)
{
if ($this->children->contains($child)) {
$this->children->remove($child);
}
}
/**
* @return array an array of entities which will also be removed when the calling entity is remvoed
*/
public function getCascadeRemoveableEntities()
{
return $this->articles->toArray();
}
/**
* @return array an array of entities asscociated to the calling entity, which should be detached when calling
* entity is removed.
*/
public function getDirtyEntitiesOnInvalidation()
{
return [];
}
/**
* @return ArrayCollection
*/
public function getChildren()
{
return $this->children;
}
/**
* @return Category
*/
public function getParent()
{
return $this->parent;
}
/**
* @param Category $parent
*/
public function setParent($parent)
{
if ($this->parent) {
$this->parent->removeChild($this);
}
$this->parent = $parent;
if ($parent) {
$parent->addChild($this);
}
}
}
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Oasis\Mlib\Doctrine\AutoIdTrait;
use Oasis\Mlib\Doctrine\CascadeRemovableInterface;
use Oasis\Mlib\Doctrine\CascadeRemoveTrait;
/**
* Class Tag
*
* @ORM\Entity()
*
* @ORM\HasLifecycleCallbacks()
*/
class Tag implements CascadeRemovableInterface
{
use CascadeRemoveTrait;
use AutoIdTrait;
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="Article", mappedBy="tags")
*/
protected $articles;
public function __construct()
{
$this->articles = new ArrayCollection();
}
function __toString()
{
return sprintf("Tag #%s", $this->getId());
}
/**
* @param Article $article
* @internal
*/
public function addArticle(Article $article)
{
if (!$this->articles->contains($article)) {
$this->articles->add($article);
}
}
/**
* @return ArrayCollection
*/
public function getArticles()
{
return $this->articles;
}
/**
* @return array an array of entities which will also be removed when the calling entity is remvoed
*/
public function getCascadeRemoveableEntities()
{
return [];
}
/**
* @return array an array of entities asscociated to the calling entity, which should be detached when calling
* entity is removed.
*/
public function getDirtyEntitiesOnInvalidation()
{
return $this->articles->toArray();
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.