$name; } else { throw new \Exception("Property {$name} does not Exists"); } } public function __set($name,$value) { if (property_exists($this,$name)) { if ($value == '') { $this->$name = null; } else { $this->$name = $value; } return $this; } else { throw new \Exception("Property {$name} does not Exists"); } } public function generateSlug($name,EntityManager $em) { $slug = \URLify::filter($name, 255, 'de'); /** @var EntityRepository $repo */ $repo = $em->getRepository(get_class($this)); $entity = $repo->findOneBy(['slug' => $slug]); if (is_null($entity)) { return $slug; } else { $counter = 1; while (true) { $new_slug = $slug . '-' . $counter; $entity = $repo->findOneBy(['slug' => $new_slug]); if (is_null($entity)) { return $new_slug; } if ($counter === 100) { throw new \Exception('There are 100 events with the same name, pick a fresh one!'); } $counter++; } } return null; } }