<?php namespace Doctrine\Tests\Models\Company; /** * Description of CompanyPerson * * @author robo * @Entity * @Table(name="company_persons") * @InheritanceType("JOINED") * @DiscriminatorColumn(name="discr", type="string") * @DiscriminatorMap({ * "person" = "CompanyPerson", * "manager" = "CompanyManager", * "employee" = "CompanyEmployee"}) */ class CompanyPerson { /** * @Id * @Column(type="integer") * @GeneratedValue(strategy="AUTO") */ private $id; /** * @Column(type="string") */ private $name; /** * @OneToOne(targetEntity="CompanyPerson", mappedBy="spouse") * @JoinColumn(name="spouse_id", referencedColumnName="id") */ private $spouse; /** * @ManyToMany(targetEntity="CompanyPerson") * @JoinTable(name="company_persons_friends", joinColumns={@JoinColumn(name="person_id", referencedColumnName="id")}, inverseJoinColumns={@JoinColumn(name="friend_id", referencedColumnName="id")}) */ private $friends; public function __construct() { $this->friends = new \Doctrine\Common\Collections\ArrayCollection; } public function getId() { return $this->id; } public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } public function getSpouse() { return $this->spouse; } public function getFriends() { return $this->friends; } public function addFriend(CompanyPerson $friend) { if ( ! $this->friends->contains($friend)) { $this->friends->add($friend); $friend->addFriend($this); } } public function setSpouse(CompanyPerson $spouse) { if ($spouse !== $this->spouse) { $this->spouse = $spouse; $this->spouse->setSpouse($this); } } }