Symfony DiscriminatorColumn - одна сущность с несколькими сущностями - PullRequest
0 голосов
/ 01 октября 2018

У меня есть 3 таблицы, Articles, ArticlesTree, fieldsi18n ... Мой текущий код имеет отношение OnoToOne между fieldsi18n и двумя другими объектами.Таким образом, в таблице моего fieldsi18n есть один столбец к article_id и другой для tree_id ... как я могу сделать это только с одним столбцом, который будет назван element_id Как я могу использовать DiscriminatorColumn?

HexFieldI18n:

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\HexFieldI18nRepository")
 */
class HexFieldI18n
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;
    /**
     * @ORM\OneToOne(targetEntity="App\Entity\HexArticlesTree", mappedBy="label", cascade={"persist", "remove"})
     */
    private $tree;

    /**
     * @ORM\OneToOne(targetEntity="App\Entity\HexArticles", mappedBy="label", cascade={"persist", "remove"})
     */

    /**
     * @ORM\OneToOne(targetEntity="App\Entity\HexArticles", mappedBy="label", cascade={"persist", "remove"})
     */
    private $article;
}

HexArticles

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\HexArticlesRepository")
 */
class HexArticles
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\OneToOne(targetEntity="App\Entity\HexFieldI18n", inversedBy="article", cascade={"persist", "remove"})
     */
    private $label;
}

HexArticlesTree

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\HexArticlesTreeRepository")
 */
class HexArticlesTree
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\OneToOne(targetEntity="App\Entity\HexFieldI18n", inversedBy="article", cascade={"persist", "remove"})
     */
    private $label;
}

Есть идеи?Спасибо

1 Ответ

0 голосов
/ 01 октября 2018

Я не беру только один столбец с именем element_id .В Doctrine есть несколько аннотаций, таких как @InheritanceType, для определения типа inherance SINGLE_TABLE или JOINED.Я использовал только наследование SINGLE_TABLE, которое в основном имеет столбцы для определения его сущности, которые сохраняются в столбце, помеченном пометкой @DiscrimatorType, вы должны помнить, что сущности не будут сохраняться в базе данных, действуют только как дескриптор.

...