12345678910111213141516171819202122232425262728293031323334353637383940 |
- <?php
- // src/Service/SluggerService.php
- namespace App\Service;
- use App\Entity\Article;
- use Doctrine\ORM\EntityManagerInterface;
- use Symfony\Component\String\Slugger\SluggerInterface;
- class SluggerService
- {
- public function __construct(
- protected readonly EntityManagerInterface $entityManager,
- protected readonly SluggerInterface $slugger)
- {
- }
- public function generateSlugsForExistingArticles()
- {
- $articles = $this->entityManager->getRepository(Article::class)->findAll();
- foreach ($articles as $article) {
- $slug = $this->slugger->slug($article->getTitle())->lower();
- $existingSlug = $slug;
- // Vérification des conflits
- $count = 1;
- while ($this->entityManager->getRepository(Article::class)->findOneBy(['slug' => $existingSlug])) {
- $existingSlug = $slug . '-' . $count;
- $count++;
- }
- $article->setSlug($existingSlug);
- $this->entityManager->persist($article);
- }
- $this->entityManager->flush();
- }
- }
|