. */ namespace Volkszaehler\Model; use Doctrine\Common\Collections; use Doctrine\Common\Collections\ArrayCollection; /** * Group entity * * @author Steffen Vogel * @package default * * @Entity * @Table(name="groups") */ class Group extends Entity { /** @Column(type="string", nullable=false) */ protected $name; /** @Column(type="string", nullable=true) */ protected $description; /** * @ManyToMany(targetEntity="Channel") * @JoinTable(name="groups_channel", * joinColumns={@JoinColumn(name="group_id", referencedColumnName="id")}, * inverseJoinColumns={@JoinColumn(name="channel_id", referencedColumnName="id")} * ) */ protected $channels = NULL; /** * @ManyToMany(targetEntity="Group") * @JoinTable(name="groups_groups", * joinColumns={@JoinColumn(name="parent_id", referencedColumnName="id")}, * inverseJoinColumns={@JoinColumn(name="child_id", referencedColumnName="id")} * ) */ protected $children = NULL; /** * construct */ public function __construct() { parent::__construct(); $this->channels = new ArrayCollection(); $this->children = new ArrayCollection(); } /** * adds group as new child * * @param Group $child * @todo check against endless recursion * @todo check if the group is already member of the group */ public function addGroup(Group $child) { $this->children->add($child); } /** * adds channel as new child * * @param Channel $child * @todo check if the channel is already member of the group */ public function addChannel(Channel $child) { $this->channels->add($child); } /** * getter & setter */ public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } public function getDescription() { return $this->description; } public function setDescription($description) { $this->description = $description; } public function getSubGroups() { return $this->children; } public function getChannels() { return $this->channels; } } ?>