在教义 2 多对多关系中是否有可能没有连接表中的组合键,而是具有 ID 列。
A_B
ID
A_ID
B_ID
当前的问题是它按升序对插入的 id 进行排序,但我需要它们按照从表单中添加的顺序排列。
谢谢
多对多关系并不意味着要排序。如果要订购某些内容,则会向联接表引入额外的数据,并且它不再是联接表,而是一个单独的实体。因此,为了对关系进行排序,您必须定义"连接实体",并为两个表设置多对一实现,如下所示:
Table A Table AB Table B
ID A_ID ID
B_ID
order
AB 表与 A 和 B 具有多对一关系。
是的,这是可能的
Table A Table AB Table B
ID ID
A_ID ID
B_ID
order
在实体中,应定义:
/**
* @ORMManyToMany(targetEntity="YourNameSpaceModelEntitiesB",fetch="EXTRA_LAZY")
* @ORMJoinTable(
* name="AB",
* joinColumns={
* @ORMJoinColumn(name="B_ID", referencedColumnName="A_ID")
* },
* inverseJoinColumns={
* @ORMJoinColumn(name="B_ID", referencedColumnName="ID")
* }
*)
*/
protected $B;
在 B 实体中:
/**
* @ORMManyToOne(targetEntity="YourNameSpaceModelEntitiesA", inversedBy="AB", fetch="EXTRA_LAZY")
* @ORMJoinColumns({
* @ORMJoinColumn(name="A_ID", referencedColumnName="ID")
* })
*/
protected $A;
但是,如果您的主要问题只是排序,则可以将创建的字段添加到表中并按它排序。
->orderBy('AB.created', 'DESC')