From 1937f3ea2268b83f031b4fea4deb936061b6cabf Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 26 Oct 2019 09:01:51 +0200 Subject: [PATCH] Trying to automatically persist tags --- .../Shlinkio.Shlink.Core.Entity.ShortUrl.php | 1 + module/Core/src/Util/TagManagerTrait.php | 17 ++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/module/Core/config/entities-mappings/Shlinkio.Shlink.Core.Entity.ShortUrl.php b/module/Core/config/entities-mappings/Shlinkio.Shlink.Core.Entity.ShortUrl.php index 76e5ae7b..18fc6a0d 100644 --- a/module/Core/config/entities-mappings/Shlinkio.Shlink.Core.Entity.ShortUrl.php +++ b/module/Core/config/entities-mappings/Shlinkio.Shlink.Core.Entity.ShortUrl.php @@ -60,6 +60,7 @@ $builder->createManyToMany('tags', Entity\Tag::class) ->setJoinTable('short_urls_in_tags') ->addInverseJoinColumn('tag_id', 'id', true, false, 'CASCADE') ->addJoinColumn('short_url_id', 'id', true, false, 'CASCADE') + ->cascadePersist() ->build(); $builder->createManyToOne('domain', Entity\Domain::class) diff --git a/module/Core/src/Util/TagManagerTrait.php b/module/Core/src/Util/TagManagerTrait.php index 99c77c67..7d439229 100644 --- a/module/Core/src/Util/TagManagerTrait.php +++ b/module/Core/src/Util/TagManagerTrait.php @@ -24,21 +24,20 @@ trait TagManagerTrait $entities = []; foreach ($tags as $tagName) { $tagName = $this->normalizeTagName($tagName); - $tag = $em->getRepository(Tag::class)->findOneBy(['name' => $tagName]) ?: new Tag($tagName); - $em->persist($tag); + $tag = $em->getRepository(Tag::class)->findOneBy(['name' => $tagName]) ?? new Tag($tagName); + +// if (! $tag) { +// $tag = ; +// $em->persist($tag); +// } + $entities[] = $tag; } return new Collections\ArrayCollection($entities); } - /** - * Tag names are trimmed, lower cased and spaces are replaced by dashes - * - * @param string $tagName - * @return string - */ - private function normalizeTagName($tagName): string + private function normalizeTagName(string $tagName): string { return str_replace(' ', '-', strtolower(trim($tagName))); }