我有一個實體Employee
Symfony Doctrine2:我如何使用有限的一對多關係?
class Employee
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="WorkHour", mappedBy="employee", cascade={"persist", "remove"})
*/
private $workHours;
}
和WorkHour
class WorkHour
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var Profile
*
* @ORM\ManyToOne(targetEntity="Employee", inversedBy="workHours")
* @ORM\JoinColumn(name="employee_id", referencedColumnName="id")
*/
protected $profile;
/**
* @var integer
*
* @ORM\Column(name="weekday", type="smallint")
*/
private $weekday;
/**
* @var \DateTime
*
* @ORM\Column(name="hour_from", type="time")
*/
private $hourFrom;
/**
* @var \DateTime
*
* @ORM\Column(name="hour_to", type="time")
*/
private $hourTo;
}
現在我時,我要增加addWorkHour()
,removeWorkHour()
方法困惑。
通常,一對多關係可以根據需要添加任意數量的關係,但在我的情況下,一名員工只能擁有多達7個工作小時,而對於指定的weekday
(從0到6)只有一個(或沒有)記錄。
所以我想我需要的是什麼方法,比如,
public function setWorkHourByWeekday($hour_from, $hour_to, $weekday);
public function getWorkHourByWeekday($weekday);
而對於僱員集workhours後,當你堅持該員工, 我想學說刪除不再存在的那些workhours,更新那些改變的工作時間,並創造以前不存在的新工作時間。
我該如何執行此操作?我是否應該在類Employee
或Repository
或WorkHourManager
類中編寫這些邏輯?