关系是有可能在学说2许多一对多关系不有从连接表,而是一个复合键有ID列。学说:许多一对多与ID
A_B
ID
A_ID
B_ID
当前问题是,它下令由升序插入IDS,但我需要他们的顺序,他们已经从形式加入。
谢谢
关系是有可能在学说2许多一对多关系不有从连接表,而是一个复合键有ID列。学说:许多一对多与ID
A_B
ID
A_ID
B_ID
当前问题是,它下令由升序插入IDS,但我需要他们的顺序,他们已经从形式加入。
谢谢
多对多关系并不意味着排序。如果你想订购一些你正在向连接表引入额外数据的东西,它不再是一个连接表,而是一个单独的实体。因此,为了订购关系,你必须定义“加入实体”,并设置多到一个realations像两个表:
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
在一个实体,你应该定义:
/**
* @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;
一ND 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')
在某些时候,你应该尝试一下你的建议。我怀疑你会意识到,许多关系学说不能有其他属性。向下投票相应。 – Cerad
我在我的项目中使用它,它工作得很好。 –
当人们想要通过主键进行订购时,总是有点可疑。无论如何,如果默认行为不适合,则创建您自己的连接实体并与其他两个实体建立多对一的关系。但坦率地说,如果一个实体的排序很重要,那么添加你自己的排序列。 – Cerad
我建议为此添加一个自动时间戳列,并使用时间戳对结果进行排序。 – Wilt