Symfony 如何将实体多次添加到集合中

Symfony 如何将实体多次添加到集合中,symfony,doctrine-orm,Symfony,Doctrine Orm,是否有一种方法可以将作业与状态es作为多对多建立关系,其中作业可以多次具有相同的状态。我如何建立这种关系 /** * @ORM\ManyToMany(targetEntity="Status") * @ORM\JoinTable(name="jobs_statuses", * joinColumns={@ORM\JoinColumn(name="job_id", referencedColumnName="id")}, * inverseJoinColumns={@O

是否有一种方法可以将
作业
状态
es作为
多对多
建立关系,其中作业可以多次具有相同的状态。我如何建立这种关系

/**
 * @ORM\ManyToMany(targetEntity="Status")
 * @ORM\JoinTable(name="jobs_statuses",
 *      joinColumns={@ORM\JoinColumn(name="job_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="status_id", referencedColumnName="id")}
 *      )
 */
protected $statuses;

在我的例子中,我有一个
状态
,我想在
作业
中将此状态存储为一个列表,其中最后一个是当前状态。他们可以重复。例如,假设我们有状态:
1
2
3
4
,在这些状态中,您可以多次转到每个状态。列表就像是状态的历史记录。

如果你想有状态的历史记录,你必须存储一个额外的值,比如datetime。(如果不是,则不必保持多个关系,因为它们都是相同的)

因此,要有状态的历史记录,您需要存储附加值(如datetime),从而从
ManyToMany
关系切换到两个
OneToMany
关系,以及它们之间的实体,因为
ManyToMany
不能有额外的列:

在职业课上:

/**
 * @ORM\OneToMany(targetEntity="JobStatusHistory")
 */
protected $jobStatusHistories;
在新的JobStatusHistory类中:

/**
 * @ORM\ManyToOne(targetEntity="Job")
 */

protected $job;

/**
 * @ORM\ManyToOne(targetEntity="Status")
 */
protected $Status;

protected $jobStatusDatetime
最后在Status类中:

/**
 * @ORM\OneToMany(targetEntity="JobStatusHistory")
 */
protected $jobStatusHistories;

你到底有什么问题?更新的问题。看一看