У меня есть некоторые сущности, созданные Doctrine. Одним из них является Timeslot , вот определение таблицы
TABLE: Timeslot id integer primary key start integer end integer
Я хочу расширить класс сущностей Timeslot , используя некоторые вспомогательные методы, такие как
public class TimeslotHelper extends Timeslot { public function getStartDay(){ return $this->$start_time / (24*60); } public function getStartHour(){ return $this->$end_time % (24*60); } public function getStartMinutes(){ return $this->$start_time % 60; } ... }
Я получаю все экземпляры Timeslot , используя
$timeslots = $this->getDoctrine()->getRepository('AppBundle:Timeslot')->find...
Но я не хочу модифицировать файл сгенерированного авторами сгенерированного доктрины, и я хотел бы использовать его как:
$timeslots = $this->getDoctrine()->getRepository('AppBundle:TimeslotHelper')->find...
Только расширяя класс Timeslot, у меня есть эта ошибка (поскольку объект неправильно отображен):
No mapping file found named '/home/otacon/PhpstormProjects/Web/src/AppBundle/Resources/config/doctrine/TimeslotHelper.orm.xml' for class 'AppBundle\Entity\TimeslotHelper'.
Любые намеки?
Суперкласса TimeslotHelper
abstract class TimeslotHelper { abstract protected function getStart(); abstract protected function getEnd(); public function getStartDay(){ return floor($this->getStart() / (24*60)); } public function getEndDay(){ return floor($this->getEnd() / (24*60)); } public function getStartHour(){ return floor(($this->getStart() % (24*60)) / 60); } public function getEndHour(){ return floor(($this->getEnd() % (24*60)) / 60); } public function getStartMinute(){ return $this->getStart() % 60; } public function getEndMinute(){ return $this->getEnd() % 60; } }
Подкласс подкласса
/** * Timeslot * * @ORM\Entity */ class Timeslot extends TimeslotHelper { /** * @var integer * * @ORM\Column(name="start", type="integer", nullable=true) */ private $start; /** * @var integer * * @ORM\Column(name="end", type="integer", nullable=true) */ private $end; /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * Set start * * @param integer $start * @return Timeslot */ public function setStart($start) { $this->start = $start; return $this; } /** * Get start * * @return integer */ public function getStart() { return $this->start; } /** * Set end * * @param integer $end * @return Timeslot */ public function setEnd($end) { $this->end = $end; return $this; } /** * Get end * * @return integer */ public function getEnd() { return $this->end; } /** * Get id * * @return integer */ public function getId() { return $this->id; } }
вы должны сделать обратное
public class Timeslot extends TimeslotHelper { //the doctrine auto-generated class file }
Класс вашего помощника:
public class TimeslotHelper { public function getStartDay(){ return $this->$start_time / (24*60); } public function getStartHour(){ return $this->$end_time % (24*60); } public function getStartMinutes(){ return $this->$start_time % 60; } ... }
Ваше лицо
$timeslots = $this->getDoctrine()->getRepository('AppBundle:Timeslot')->find... $timeslots-> getStartDay()