src/Submarine/PagesBundle/Entity/PageBody.php line 22

Open in your IDE?
  1. <?php
  2. /**
  3.  * (c) itmedia.by <info@itmedia.by>
  4.  */
  5. namespace Submarine\PagesBundle\Entity;
  6. use Doctrine\Common\Collections\ArrayCollection;
  7. use Postroyka\AppBundle\Redis\RedisBaseProvider;
  8. use Submarine\CoreBundle\Entity\SubmarineEntityInterface;
  9. use Doctrine\ORM\Mapping as ORM;
  10. /**
  11.  * Class PageBody
  12.  * @package Submarine\PagesBundle
  13.  *
  14.  * @ORM\Entity()
  15.  * @ORM\Table(name="submarine_pages_body")
  16.  *
  17.  * @ORM\HasLifecycleCallbacks()
  18.  */
  19. class PageBody implements SubmarineEntityInterface
  20. {
  21.     /**
  22.      * ID
  23.      * @var int
  24.      *
  25.      * @ORM\Column(name="id", type="integer", nullable=false, unique=true)
  26.      * @ORM\Id()
  27.      * @ORM\GeneratedValue(strategy="AUTO")
  28.      */
  29.     private $id;
  30.     /**
  31.      * Тело документа
  32.      * @var string
  33.      *
  34.      * @ORM\Column(name="body", type="text", nullable=true)
  35.      */
  36.     private $body;
  37.     /**
  38.      * @var ArrayCollection|Page[]
  39.      * @ORM\OneToMany(targetEntity="Submarine\PagesBundle\Entity\Page", mappedBy="pageBody", cascade={"persist", "remove"})
  40.      */
  41.     private $pages;
  42.     public function __construct()
  43.     {
  44.         $this->pages = new ArrayCollection();
  45.     }
  46.     /**
  47.      * Имя сущности
  48.      * @return string
  49.      */
  50.     public static function entityName()
  51.     {
  52.         return __CLASS__;
  53.     }
  54.     /**
  55.      * @return int
  56.      */
  57.     public function getId()
  58.     {
  59.         return $this->id;
  60.     }
  61.     /**
  62.      * @param int $id
  63.      */
  64.     public function setId($id)
  65.     {
  66.         $this->id $id;
  67.     }
  68.     /**
  69.      * @return string
  70.      */
  71.     public function getBody()
  72.     {
  73.         return $this->body;
  74.     }
  75.     /**
  76.      * @param string $body
  77.      */
  78.     public function setBody($body)
  79.     {
  80.         $this->body $body;
  81.     }
  82.     /**
  83.      * @return ArrayCollection
  84.      */
  85.     public function getPages(): ArrayCollection
  86.     {
  87.         return $this->pages;
  88.     }
  89.     /**
  90.      * @param ArrayCollection $pages
  91.      */
  92.     public function setPages(ArrayCollection $pages): void
  93.     {
  94.         $this->pages $pages;
  95.     }
  96.     public function __toString()
  97.     {
  98.         return $this->getBody();
  99.     }
  100.     /**
  101.      * @ORM\PreUpdate()
  102.      */
  103.     public function preUpdate()
  104.     {
  105.         /** @var Page $page */
  106.         foreach ($this->pages->toArray() as $page) {
  107.             $page->setUpdatedAt(new \DateTime());
  108.         }
  109.         RedisBaseProvider::clearKeysByPattern('*' RedisBaseProvider::REDIS_HOMEPAGE_KEY);
  110.         RedisBaseProvider::clearKeysByPattern('*' RedisBaseProvider::CATALOG_PAGE_REDIS_KEY '*');
  111.     }
  112. }