/** * Remove skill of this object * through the kk_trixionary_skill_reference cross reference table. * * @param ChildSkill $skill * @return ChildReference The current object (for fluent API support) */ public function removeSkill(ChildSkill $skill) { if ($this->getSkills()->contains($skill)) { $skillReference = new ChildSkillReference(); $skillReference->setSkill($skill); if ($skill->isReferencesLoaded()) { //remove the back reference if available $skill->getReferences()->removeObject($this); } $skillReference->setReference($this); $this->removeSkillReference(clone $skillReference); $skillReference->clear(); $this->collSkills->remove($this->collSkills->search($skill)); if (null === $this->skillsScheduledForDeletion) { $this->skillsScheduledForDeletion = clone $this->collSkills; $this->skillsScheduledForDeletion->clear(); } $this->skillsScheduledForDeletion->push($skill); } return $this; }