Doctrine 2多对多与 NOT 的关系是否有可能从联接表中获得复合键,而是有 ID列。
A_B
ID
A_ID
B_ID
当前问题是按升序对插入的ID 进行排序,但是我需要它们按照从表单中添加的顺序排列
由于
答案 0 :(得分:0)
多对多关系并不意味着订购。如果您想订购某些东西,那么您需要将额外的数据引入到连接表中,它将不再是一个连接表,而是一个单独的实体。因此,为了订购关系,您必须定义“加入实体”并为这两个表设置多对一的关系:
Table A Table AB Table B
ID A_ID ID
B_ID
order
AB表与A和B有多对一的关系。
答案 1 :(得分:-1)
是的,这是可能的
Table A Table AB Table B
ID ID
A_ID ID
B_ID
order
在您应该定义的实体中:
/**
* @ORM\ManyToMany(targetEntity="\YourNameSpace\Model\Entities\B",fetch="EXTRA_LAZY")
* @ORM\JoinTable(
* name="AB",
* joinColumns={
* @ORM\JoinColumn(name="B_ID", referencedColumnName="A_ID")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="B_ID", referencedColumnName="ID")
* }
*)
*/
protected $B;
和B实体:
/**
* @ORM\ManyToOne(targetEntity="\YourNameSpace\Model\Entities\A", inversedBy="AB", fetch="EXTRA_LAZY")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="A_ID", referencedColumnName="ID")
* })
*/
protected $A;
但如果您的主要问题只是排序,您可以将创建的字段添加到表中并按其排序。
->orderBy('AB.created', 'DESC')