学说:与ID的多对多关系



教义 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')

相关内容

  • 没有找到相关文章

最新更新