2016-10-21 5 views
1

たとえば、JobStatusとの関係を持つ方法は、ジョブが同じステータスを複数回持つことができるmany-to-manyとなります。どのように私はこの関係船を作成することができますか?私の場合はコレクションに複数のエンティティを追加する方法

/** 
* @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; 

私はstatusesを持っていると私は最後のものは、現在のものですリストとしてjobで、この状態を保存したいです。そして彼らは繰り返すことができます。たとえば、ステータスが「1」、「2」、「3」、「4」とすると、それぞれのステータスに複数回アクセスできます。リストはステータスの履歴に似ています。

+0

正確にあなたの問題ですか? – Veve

+0

質問が更新されました。見てみましょう – Vardius

答えて

2

ステータスの履歴が必要な場合は、datetimeのような追加の値を保存する必要があります。

ステータスの履歴を取得するには、追加の値(datetimeのような)を保存する必要があります。したがって、スイッチを切り替える必要がありますジョブ・クラスでは

:新しいJobStatusHistoryクラスで

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

を:

2人の OneToManyの関係、およびそれらの間のエンティティへ ManyToMany関係 ManyToManyは、余分な列(複数可)を持つことができませんので、から
/** 
* @ORM\ManyToOne(targetEntity="Job") 
*/ 

protected $job; 

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

protected $jobStatusDatetime 

そして最後にステータスクラスで:

/** 
* @ORM\OneToMany(targetEntity="JobStatusHistory") 
*/ 
protected $jobStatusHistories; 
関連する問題