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;
你到底有什么问题?更新的问题。看一看