我有3个表格,Articles,ArticlesTree,fields18n ... 我当前的代码在fieldi18n和其他2个实体之间具有OnoToOne关系。 因此,我的fields18n的表中有articles_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;
}
有什么想法吗? 谢谢
答案 0 :(得分:0)
我不理解只有一列将被命名为element_id 。教义具有多个@InheritanceType
注释,用于确定inheranceType SINGLE_TABLE
或JOINED
。我只使用了SINGLE_TABLE
继承,该继承基本上具有确定其实体的列,这些继承保存在用@DiscrimatorType
批注标记的列中,您必须记住,实体不会持久化到数据库中,就像一个描述符。