与学说 ORM (Symfony) 正确创建 ManyToMany 递归/自反关系
create properly a ManyToMany Recursive / Reflexive relation with doctrine ORM (Symfony)
我将此实体命名为 Pointscomptage.php
:
class Pointscomptage
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="invariant", type="string", length=150, nullable=false)
*/
private $invariant;
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=150, nullable=false)
*/
private $nom;
/**
* @var string
*
* @ORM\Column(name="consoProduction", type="string", length=150, nullable=false)
*/
private $consoProduction;
/**
* @var Typesenergie
*
* @ORM\ManyToOne(targetEntity="Typesenergie", inversedBy="pointscomptage")
* @ORM\JoinColumn(name="typesenergie_id", referencedColumnName="id")
*/
private $typesenergie;
/** ... getters and setters */
我需要了解如何在此基础上创建 ManyToMany recursive 或 reflexive 关系实体。
也就是说,一个点数可以没有(0)个或很多(n)个点数。
如何在同一个实体上建立这种关系?
编辑
感谢 Jovan Perovic 回答和建议这是我找到的解决方案,我们需要尊重学说注释:
/**
* @ORM\ManyToMany(targetEntity="Pointscomptage")
* @ORM\JoinTable(name="pointscomptage_link_table",
* joinColumns={
* @ORM\JoinColumn(name="pointscomptage_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="id_pointscomptage2", referencedColumnName="id")
* }
* )
**/
private $pointscomptages;
非常感谢。
这可以通过与任何实体相同的方式来完成。参见 official docs on @ManyToMany
例如:
/**
* @ManyToMany(targetEntity="Pointscomptage")
* @JoinTable(name="pointscomptage_link_table",
* joinColumns={@JoinColumn(name="id_pointscomptage1", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="id_pointscomptage2", referencedColumnName="id")}
* )
**/
private $pointscomptages;
此示例假设如下:
- 关系是单向的。双向同样容易实现,并且在上面的文档 link 中也有描述。
- 正在连接 table 名为
pointscomptage_link_table
- 正在连接 table
pointscomptage_link_table
包含两个列键:
- id_pointscomptage1
- id_pointscomptage2
希望对您有所帮助...
我将此实体命名为 Pointscomptage.php
:
class Pointscomptage
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="invariant", type="string", length=150, nullable=false)
*/
private $invariant;
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=150, nullable=false)
*/
private $nom;
/**
* @var string
*
* @ORM\Column(name="consoProduction", type="string", length=150, nullable=false)
*/
private $consoProduction;
/**
* @var Typesenergie
*
* @ORM\ManyToOne(targetEntity="Typesenergie", inversedBy="pointscomptage")
* @ORM\JoinColumn(name="typesenergie_id", referencedColumnName="id")
*/
private $typesenergie;
/** ... getters and setters */
我需要了解如何在此基础上创建 ManyToMany recursive 或 reflexive 关系实体。
也就是说,一个点数可以没有(0)个或很多(n)个点数。
如何在同一个实体上建立这种关系?
编辑
感谢 Jovan Perovic 回答和建议这是我找到的解决方案,我们需要尊重学说注释:
/**
* @ORM\ManyToMany(targetEntity="Pointscomptage")
* @ORM\JoinTable(name="pointscomptage_link_table",
* joinColumns={
* @ORM\JoinColumn(name="pointscomptage_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="id_pointscomptage2", referencedColumnName="id")
* }
* )
**/
private $pointscomptages;
非常感谢。
这可以通过与任何实体相同的方式来完成。参见 official docs on @ManyToMany
例如:
/**
* @ManyToMany(targetEntity="Pointscomptage")
* @JoinTable(name="pointscomptage_link_table",
* joinColumns={@JoinColumn(name="id_pointscomptage1", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="id_pointscomptage2", referencedColumnName="id")}
* )
**/
private $pointscomptages;
此示例假设如下:
- 关系是单向的。双向同样容易实现,并且在上面的文档 link 中也有描述。
- 正在连接 table 名为
pointscomptage_link_table
- 正在连接 table
pointscomptage_link_table
包含两个列键:- id_pointscomptage1
- id_pointscomptage2
希望对您有所帮助...