<?php namespace Doctrine\Tests\Models\Company; /** * @Entity * @Table(name="company_contracts") * @InheritanceType("SINGLE_TABLE") * @DiscriminatorColumn(name="discr", type="string") * @DiscriminatorMap({ * "fix" = "CompanyFixContract", * "flexible" = "CompanyFlexContract", * "flexultra" = "CompanyFlexUltraContract" * }) */ abstract class CompanyContract { /** * @Id @column(type="integer") @GeneratedValue */ private $id; /** * @ManyToOne(targetEntity="CompanyEmployee", inversedBy="soldContracts") */ private $salesPerson; /** * @Column(type="boolean") * @var bool */ private $completed = false; /** * @ManyToMany(targetEntity="CompanyEmployee", inversedBy="contracts") * @JoinTable(name="company_contract_employees", * joinColumns={@JoinColumn(name="contract_id", referencedColumnName="id", onDelete="CASCADE")}, * inverseJoinColumns={@JoinColumn(name="employee_id", referencedColumnName="id")} * ) */ private $engineers; public function __construct() { $this->engineers = new \Doctrine\Common\Collections\ArrayCollection; } public function getId() { return $this->id; } public function markCompleted() { $this->completed = true; } public function isCompleted() { return $this->completed; } public function getSalesPerson() { return $this->salesPerson; } public function setSalesPerson(CompanyEmployee $salesPerson) { $this->salesPerson = $salesPerson; } public function getEngineers() { return $this->engineers; } public function addEngineer(CompanyEmployee $engineer) { $this->engineers[] = $engineer; } public function removeEngineer(CompanyEmployee $engineer) { $this->engineers->removeElement($engineer); } abstract public function calculatePrice(); }