Witam, mam pytanie dotyczące mapowania. Mam 3 entity Page, Gallery i File Czy możliwe jest mapowanie przy użyciu klucza? Np. dla Page chce wyciągnąć file po entity_id i po entity_type = 'page', dla Gallery po entity_type = 'gallery'. Zacząłem tworzyć te entity i zatrzymałem się na tym problemie. Proszę o pomoc.
File:
**
* @ORM\Entity
* @ORM\Table(name="cms_file")
*/
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/** @ORM\Column(type="string") */
protected $entity_type;
/** @ORM\Column(type="integer") */
protected $entity_id;
/** @ORM\Column(type="text") */
protected $filename;
/** @ORM\Column(type="string") */
protected $mime_type;
/**
* @ORM\ManyToOne(targetEntity="CmsIr\File\Entity\Gallery", inversedBy="entity_id")
* @ORM\JoinColumn(name="entity_id", referencedColumnName="id", onDelete="CASCADE")
**/
protected $gallery;
/**
* @ORM\ManyToOne(targetEntity="CmsIr\Page\Entity\Page", inversedBy="entity_id")
* @ORM\JoinColumn(name="entity_id", referencedColumnName="id", onDelete="CASCADE")
**/
protected $page;
Page:
/**
* @ORM\Entity(repositoryClass="CmsIr\Page\Entity\PageTable")
* @ORM\Table(name="cms_page")
*/
class Page
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/** @ORM\Column(type="string") */
protected $name;
/** @ORM\Column(type="string") */
protected $slug;
/** @ORM\Column(type="string") */
protected $url;
/**
* @ORM\ManyToOne(targetEntity="CmsIr\System\Entity\Status")
* @ORM\JoinColumn(name="status_id", referencedColumnName="id")
*/
protected $status;
/** @ORM\Column(type="text") */
protected $content;
/** @ORM\Column(type="string") */
protected $filename_main;
/**
* @ORM\OneToMany(targetEntity="CmsIr\File\Entity\File", mappedBy="page")
**/
protected $files;
public function __construct()
{
$this->files = new ArrayCollection();
}
Gallery:
/**
* @ORM\Entity(repositoryClass="CmsIr\File\Entity\GalleryTable")
* @ORM\Table(name="cms_gallery")
*/
class Gallery
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="CmsIr\System\Entity\Status")
* @ORM\JoinColumn(name="status_id", referencedColumnName="id")
*/
protected $status;
/** @ORM\Column(type="string") */
protected $name;
/** @ORM\Column(type="text") */
protected $slug;
/** @ORM\Column(type="string") */
protected $url;
/**
* @ORM\OneToMany(targetEntity="CmsIr\File\Entity\File", mappedBy="gallery")
**/
protected $files;
public function __construct()
{
$this->files = new ArrayCollection();
}