在多对多关系 Symfony 6 中添加额外字段

问题描述 投票:0回答:1

嗨,所以我在名为 client 和 offre 的 2 个实体之间创建了多对多关系

这是我的实体客户端:

#[ORM\ManyToMany(targetEntity: Offre::class, inversedBy: 'clients')]
#[ORM\JoinColumn(name:"CLIENTID", referencedColumnName:"clientid")]
#[ORM\InverseJoinColumn(name: "OFFREID", referencedColumnName: "offreid")]
#[ORM\JoinTable(name: "clients_offre")] 
private Collection $offres;

这是我的实体

#[ORM\ManyToMany(targetEntity: client::class, mappedBy: 'offres')]
private Collection $clients;

按照计划,它为我创建了一个名为clients_offre 的表,其中包含 CLIENTID 和 OFFREID。

现在我想在此表中添加一个评论字段,但该字段没有引用的ColumnName,所以我不知道该怎么做。

提前感谢那些花时间提供帮助的人!

symfony many-to-many
1个回答
0
投票

您无法在具有额外列的两个实体之间创建直接关系。

您需要创建一个新实体作为

Client
Offre
之间的中介。

您的新实体可以称为

ClientOffre
,并将与
Client
Offre
相关,并具有两个 OneToMany 和两个 ManyToOne

public class ClientOffre {
    #[ORM\ManyToOne(targetEntity: Client::class)]
    #[ORM\JoinColumn(name:"client_id", referencedColumnName:"id")]
    private $client;

    #[ORM\ManyToOne(targetEntity: Offre::class)]
    #[ORM\JoinColumn(name:"offre_id", referencedColumnName:"id")]
    private $offre;

    #[ORM\Column(type: Types::TEXT, nullable: true)]
    private ?string $comment = null;
}

您当前的实体将与这个新实体建立 OneToMany 关系:

public class Client {
    #[ORM\OneToMany(targetEntity: ClientOffre::class, mappedBy: "client")]
    private Collection $clientOffres;
}

public class Offre {
    #[ORM\OneToMany(targetEntity: ClientOffre::class, mappedBy: "offre")]
    private Collection $clientOffres;
}
© www.soinside.com 2019 - 2024. All rights reserved.