From d77c8a767bdd73f8859bac72c22d6855ca5b2081 Mon Sep 17 00:00:00 2001 From: Rasanga Perera Date: Thu, 10 Sep 2015 23:00:54 +0530 Subject: [PATCH 1/7] Add tags entity relations --- src/AppBundle/Entity/Post.php | 47 +++++++++++++ src/AppBundle/Entity/Tag.php | 123 ++++++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 src/AppBundle/Entity/Tag.php diff --git a/src/AppBundle/Entity/Post.php b/src/AppBundle/Entity/Post.php index 4ed9ba71d..94d85a153 100644 --- a/src/AppBundle/Entity/Post.php +++ b/src/AppBundle/Entity/Post.php @@ -2,6 +2,7 @@ namespace AppBundle\Entity; +use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; use Symfony\Component\Validator\Constraints as Assert; @@ -17,6 +18,7 @@ * * @author Ryan Weaver * @author Javier Eguiluz + * @author Rasanga Perera */ class Post { @@ -80,6 +82,17 @@ class Post */ private $comments; + /** + * @var Collection|Tag[] + * + * @ManyToMany( + * targetEntity="Tag", + * inversedBy="posts" + * ) + * @JoinTable(name="posts_tags") + */ + private $tags; + public function __construct() { $this->publishedAt = new \DateTime(); @@ -179,4 +192,38 @@ public function setSummary($summary) { $this->summary = $summary; } + + /** + * Add tag + * + * @param Tag $tag + * + * @return Post + */ + public function addTag(Tag $tag) + { + $this->tags[] = $tag; + + return $this; + } + + /** + * Remove tag + * + * @param Tag $tag + */ + public function removeTag(Tag $tag) + { + $this->tags->removeElement($tag); + } + + /** + * Get tags + * + * @return Tag[]|Collection + */ + public function getTags() + { + return $this->tags; + } } diff --git a/src/AppBundle/Entity/Tag.php b/src/AppBundle/Entity/Tag.php new file mode 100644 index 000000000..347ed4b7f --- /dev/null +++ b/src/AppBundle/Entity/Tag.php @@ -0,0 +1,123 @@ + + */ +class Tag +{ + /** + * @var integer + * + * @ORM\Column(name="id", type="integer") + * @ORM\Id + * @ORM\GeneratedValue(strategy="AUTO") + */ + private $id; + + /** + * @var string + * + * @ORM\Column(name="tag_name", type="string", length=255) + * @Assert\NotBlank() + */ + private $name; + + /** + * @var Collection|Post[] + * + * @ORM\ManyToMany( + * targetEntity="Post", + * mappedBy="tags" + * ) + */ + private $posts; + + public function __construct() + { + $this->posts = new ArrayCollection(); + } + + /** + * Get id + * + * @return integer + */ + public function getId() + { + return $this->id; + } + + /** + * Set name + * + * @param string $name + * + * @return Tag + */ + public function setName($name) + { + $this->name = $name; + + return $this; + } + + /** + * Get name + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Add post + * + * @param Post $post + * + * @return Tag + */ + public function addPost(Post $post) + { + $this->posts[] = $post; + + return $this; + } + + /** + * Remove post + * + * @param Post $post + */ + public function removePost(Post $post) + { + $this->posts->removeElement($post); + } + + /** + * Get posts + * + * @return Post[]|Collection + */ + public function getPosts() + { + return $this->posts; + } +} From c239d5615bb6a036d8b64b9435577bf89797eee0 Mon Sep 17 00:00:00 2001 From: Rasanga Perera Date: Fri, 11 Sep 2015 12:29:14 +0530 Subject: [PATCH 2/7] add tags ORM fixtures --- app/data/blog.sqlite | Bin 59392 -> 66560 bytes .../DataFixtures/ORM/LoadFixtures.php | 110 +++++++++++++++++- src/AppBundle/Entity/Post.php | 4 +- src/AppBundle/Entity/Tag.php | 1 + 4 files changed, 112 insertions(+), 3 deletions(-) diff --git a/app/data/blog.sqlite b/app/data/blog.sqlite index 0141e70e34d0f9627b3234e93c2e0b4f3444987c..56dd2bba2e99040155a9b0bdd3f38ea7e286c043 100644 GIT binary patch delta 6617 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 * @author Javier Eguiluz + * @author Rasanga Perera */ -class LoadFixtures implements FixtureInterface, ContainerAwareInterface +class LoadFixtures extends AbstractFixture implements FixtureInterface, ContainerAwareInterface { /** @var ContainerInterface */ private $container; @@ -42,6 +45,8 @@ public function load(ObjectManager $manager) { $this->loadUsers($manager); $this->loadPosts($manager); + $this->loadTags($manager); + $this->loadPostsTags($manager); } private function loadUsers(ObjectManager $manager) @@ -91,11 +96,114 @@ private function loadPosts(ObjectManager $manager) } $manager->persist($post); + + $this->addReference('post-' . $i, $post); + } + + $manager->flush(); + } + + private function loadTags(ObjectManager $manager) + { + $tagNames = array( + 'Lorem', + 'ipsum', + 'consectetur', + 'adipiscing', + 'incididunt', + 'labore', + 'voluptate' + ); + + foreach ($tagNames as $key => $name) { + $tag = new Tag(); + $tag->setName($name); + + $manager->persist($tag); + + $this->addReference('tag-' . ++$key, $tag); } $manager->flush(); } + private function loadPostsTags(ObjectManager $manager) + { + /** @var Post $post1 */ + $post1 = $this->getReference('post-1'); + /** @var Post $post2 */ + $post2 = $this->getReference('post-2'); + /** @var Post $post3 */ + $post3 = $this->getReference('post-3'); + /** @var Post $post4 */ + $post4 = $this->getReference('post-4'); + /** @var Post $post5 */ + $post5 = $this->getReference('post-5'); + /** @var Post $post6 */ + $post6 = $this->getReference('post-6'); + /** @var Post $post7 */ + $post7 = $this->getReference('post-7'); + /** @var Post $post8 */ + $post8 = $this->getReference('post-8'); + /** @var Post $post9 */ + $post9 = $this->getReference('post-9'); + /** @var Post $post10 */ + $post10 = $this->getReference('post-10'); + + /** @var Tag $tag1 */ + $tag1 = $this->getReference('tag-1'); + /** @var Tag $tag2 */ + $tag2 = $this->getReference('tag-2'); + /** @var Tag $tag3 */ + $tag3 = $this->getReference('tag-3'); + /** @var Tag $tag4 */ + $tag4 = $this->getReference('tag-4'); + /** @var Tag $tag5 */ + $tag5 = $this->getReference('tag-5'); + /** @var Tag $tag6 */ + $tag6 = $this->getReference('tag-6'); + /** @var Tag $tag7 */ + $tag7 = $this->getReference('tag-7'); + + $post1->addTag($tag1); + $post1->addTag($tag3); + $manager->persist($post1); + + $post2->addTag($tag2); + $manager->persist($post2); + + $post3->addTag($tag3); + $post3->addTag($tag4); + $manager->persist($post3); + + $post4->addTag($tag5); + $post4->addTag($tag6); + $post4->addTag($tag7); + $manager->persist($post4); + + $post5->addTag($tag1); + $manager->persist($post5); + + $post6->addTag($tag1); + $manager->persist($post6); + + $post7->addTag($tag3); + $manager->persist($post7); + + $post8->addTag($tag5); + $post8->addTag($tag7); + $manager->persist($post8); + + $post9->addTag($tag1); + $manager->persist($post9); + + $post10->addTag($tag4); + $post10->addTag($tag6); + $manager->persist($post10); + + $manager->flush(); + } + /** * {@inheritdoc} */ diff --git a/src/AppBundle/Entity/Post.php b/src/AppBundle/Entity/Post.php index 94d85a153..1d5663c7b 100644 --- a/src/AppBundle/Entity/Post.php +++ b/src/AppBundle/Entity/Post.php @@ -85,11 +85,11 @@ class Post /** * @var Collection|Tag[] * - * @ManyToMany( + * @ORM\ManyToMany( * targetEntity="Tag", * inversedBy="posts" * ) - * @JoinTable(name="posts_tags") + * @ORM\JoinTable(name="posts_tags") */ private $tags; diff --git a/src/AppBundle/Entity/Tag.php b/src/AppBundle/Entity/Tag.php index 347ed4b7f..df7299d68 100644 --- a/src/AppBundle/Entity/Tag.php +++ b/src/AppBundle/Entity/Tag.php @@ -5,6 +5,7 @@ use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; +use Symfony\Component\Validator\Constraints as Assert; /** * Tag From 5dda2711a6353036adda295cb0fd7a3c432b3428 Mon Sep 17 00:00:00 2001 From: Rasanga Perera Date: Fri, 11 Sep 2015 12:47:07 +0530 Subject: [PATCH 3/7] add tags on the post list and show views --- app/Resources/views/blog/index.html.twig | 6 +++++- app/Resources/views/blog/post_show.html.twig | 7 +++++++ app/data/blog.sqlite | Bin 66560 -> 66560 bytes .../DataFixtures/ORM/LoadFixtures.php | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/Resources/views/blog/index.html.twig b/app/Resources/views/blog/index.html.twig index 547c40680..e8a290ae9 100644 --- a/app/Resources/views/blog/index.html.twig +++ b/app/Resources/views/blog/index.html.twig @@ -10,7 +10,11 @@ {{ post.title }} - +

+ {% for tag in post.tags %} + {{ tag.name }} + {% endfor %} +

{{ post.summary|md2html }} {% else %} diff --git a/app/Resources/views/blog/post_show.html.twig b/app/Resources/views/blog/post_show.html.twig index 2d7fdef84..f8bd4a105 100644 --- a/app/Resources/views/blog/post_show.html.twig +++ b/app/Resources/views/blog/post_show.html.twig @@ -5,6 +5,13 @@ {% block main %}

{{ post.title }}

+

+ {% if 0 < post.tags | length %}Tags: {% endif %} + {% for tag in post.tags %} + {{ tag.name }} + {% endfor %} +

+ {{ post.content|md2html }}
diff --git a/app/data/blog.sqlite b/app/data/blog.sqlite index 56dd2bba2e99040155a9b0bdd3f38ea7e286c043..4f5c099dd40d16502c0b2ea211f053cb7df805fe 100644 GIT binary patch delta 4285 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 P5^0}3$xDV4e(wJO*;`=+ delta 4536 zcmZ8kYgAKL7QXi;5J=?V14RjvfQCR4AP)%O0}vHDpkfulO09^o4ME=cs#Cp55Pl3u z*t5#2wz|YM_@o%Ks-1BvEp)Wh+D_}T_0cNW{^$?qv1V4+Se@z2-skdK^JAaDz31$+ zAK(7=zK7c7huY;`F*8d!j>|&{K@m_&d`2r@>fiP>INe<4$Tz223)VH~m!vhMRW=nD zu36LKT>rv`^404~EBC%syMKLE>Bdzxuho>V*i~Lo?Wid(gAT>g^b~thWm8qz+S=9o z*1L*dC@@z$^9oY7?{rjeO3QMV6qXlRO7iR0HkB9Um%g;Ju5tUm7gwzd{Gte+5fUwH zM=Q8xFk_BBMAjqgmUYP5{o*>=!Mrqlo|uA*-iS+*0hi?d zm$ZernANyg7T{uy#>F-lm-Jb@RK51TdYuW`}VcQGW}v*28?!QfcTyP!tSe~@3|f{U#G*!Nh6%`hm%DM zd@F*LoWtQUvlHfOqY?dc)Hs|w9kn}5yDD26olPc3vk8A%noKP<&5h0~2R?b#(bQbo z1m@E^a9^~mH5(i|G`lMsoh?nMb*|4Iq~t0qJqb)Je>54=oXHrHM2PA%&RyG5Tcz3U z-0f&=tkgJgKV^9yG}JBt`*4ZmX~i~0D032DMZx-0bD_6?qx7nNn<9w4x>WvLHn}Mp z8pfj07Ih%A{-%tNffujmLg9DGf!d08MYwG;Xs9n1zC5`Io_uKl!=0EwZCAS@I&<

W`Mj- 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 diff --git a/src/AppBundle/DataFixtures/ORM/LoadFixtures.php b/src/AppBundle/DataFixtures/ORM/LoadFixtures.php index 186fb0f63..0f33fa2ec 100644 --- a/src/AppBundle/DataFixtures/ORM/LoadFixtures.php +++ b/src/AppBundle/DataFixtures/ORM/LoadFixtures.php @@ -174,9 +174,9 @@ private function loadPostsTags(ObjectManager $manager) $post3->addTag($tag3); $post3->addTag($tag4); + $post3->addTag($tag5); $manager->persist($post3); - $post4->addTag($tag5); $post4->addTag($tag6); $post4->addTag($tag7); $manager->persist($post4); From 2c9197054953b636903f1937650167640fa2263d Mon Sep 17 00:00:00 2001 From: Rasanga Perera Date: Fri, 11 Sep 2015 13:02:24 +0530 Subject: [PATCH 4/7] update test DB after adding tags --- app/data/blog_test.sqlite | Bin 59392 -> 61440 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/app/data/blog_test.sqlite b/app/data/blog_test.sqlite index 0141e70e34d0f9627b3234e93c2e0b4f3444987c..e03dc5d6f0930680f716b33fbbd37b7baec60160 100644 GIT binary patch delta 6329 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 DHg6wf delta 5675 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 Date: Fri, 11 Sep 2015 21:42:37 +0530 Subject: [PATCH 5/7] remove bidirectional posts relation in Tag entity and add other code review fixes --- app/data/blog.sqlite | Bin 66560 -> 66560 bytes app/data/blog_test.sqlite | Bin 61440 -> 66560 bytes src/AppBundle/Entity/Post.php | 34 +++++++++++++++----- src/AppBundle/Entity/Tag.php | 58 ++-------------------------------- 4 files changed, 28 insertions(+), 64 deletions(-) diff --git a/app/data/blog.sqlite b/app/data/blog.sqlite index 4f5c099dd40d16502c0b2ea211f053cb7df805fe..725363c901ef8f1c4bf29c0cfc22feb89f2add5f 100644 GIT binary patch delta 4721 zcmY*cX;4&G7QXL2q@f!G#06#RMg^q%0Zr2jDvDy%xFCvgjfPdL1sep~#7v^T?nbGa zfVO8G%4KwPYFu%_E|-*vxW?$jIMFfVGI5z$yz+dVP3FsVd?1NvgReD ztp!sj%vf4FrRJ6DF}2wf9dDFOD$C7ouAkx@m$Sg$INO;sE89JN8MJAJTdOPQ6xWWn zO|h2L&t6hIxnfz#)Y58qb6vipe$pIgX@zxRX+dsn?wqFPmmMWz>)tGzZXGi&@T(>~ zDx#m%hQ_cV5Y;;~T zl7vfs0xs6RxY+vOVvolqH4c{nJ#iTxg-fOumyr~KR8>HhrTDQcx%Y6o7OT ziWMqi1t_FE4TYi+gQ7#x2EI&6kfJCKlJp&}tXCjv(3etDKMGO`1u0gF#E$nvxK=S7T17aOb8rFn;;y@JSqy2fn!-E zaS<1p_(<5wF8Y=CBK>1A+!YnxQBXf(7Q~&%fIjUe_-1o5Woz)diK3Rxo!c_=4>Joa zaO!jh%o~{j{_`^I+iHaIMd>hOrvW?%lc4-c5!qJYe?!o+;$mL~+qSuvcDMBr7 z9s^-x7UVj!U{tpZVSC4t?;SQtutL&WJM7*cLtz^QF_9F6)iM0YlD&zbEleakIvxsw z3EsV$3f46xu>VdLyw{xsuU$z4PhmEJf6$>Zk0hOH2_ZNhzB`=&6EBc|F&*!Sf-T@` zST6~EVH+MCaXu4fZA!;5%YjWrb2WYKdUNnB_d-~}#5KZ#E@h4oy>38+md&2+TgGjQ zJCUC5ZkC(eO;yeYXS3W;-{h`otdSSFo0{w8ie`DKyRO0AT+v(u{sT$Sy*nE|uFVG1 z-V~^8H^SUaI&xIMu2Q3AH8m|uxKi^XlL?j9)YUi_)VQkU#TD*GXOmphEaM+{lkBc* zZgf`F;4cennwl$`KsjuJoTK>=2n_BxEn;Ny&tyPheI_K|h#=5YdG&{F&NQgsMMjuZ zPp8k<1e0Y}-7IHfnNZ%POc!)YLr)D8ywP@x1jnV}jqrYVB7A#46ZYP)BT~{~RJ#FcK9HgF=;UBNh&htrURM$%Y$*x2 zCasqOQuz;35TD!>K{&>QV_nLAA;R}kI9||dhm)JD5z0w;Ng0gYVu1dy8lkQ`9jx0- zu;+#YimoO??xHaG*PjQ$rCJlWvX5$IKCczQ&Lp$AT(Ea3Loknya4mDYeQ&GSs?E=L zH@Yfhm$Ru(ZmO@Vb5=Q<-PKN)?5viTRx~;>?)8mTPI-yDVln;J>~3suHi3C(I*i{w z9Seg)3)X$0hu3!|P*xNDgL)8ry#+78mugu$Y6RmoE$vG17lmnARh8GwcNz8=VbM=U zFzhkG|F+36{<9dW_CDML=3*j<R?4%0w<-0OZfp;DS>3|_ZqF^>DEKlkE9pi%UYQ5C)VOu zmgzi+TD0F=Ww(gv+Bhh=Z-QGtsdYiNZMYV4)!~~HN%*Rut%%i*22qHHk&h?A-4iBW zLqrTKHrSxo@gz98cr1h?zenFB9A<%WV~8m2lpq25SJHGTzlb_zX&zb7-)_-z;;g-# z3YU@d8ZKGkl}|_Y&-S&rRFTpszl}DG3BMujrvdXiH_B>%FBN}hrTA#S7M?q2cscpQc6cG z)^bpTMG>-TPY&%N`~?DI)d1(^k)0wdVdC4Y#IKCj`AjlyZS7&VL_*idiBRf_=EXR3 zryd9x-)w#cK;j%ngAJ6nzL5LbXbPIj9(h(TGohLm8K&Mcat1zdFF9!1NKgtLPdgKW z;8}0URE+7Es}dj*LiPbBL1Uc?V1=^*KGvNVR zdNCFaNKdT6uT<-N`oW}jF{!0th`K>(7tIc8NBD4;3A!)j!{H4?N-AdVoRDG66+Wv3 ztuuQT4MH`tgPMRsr_6=Nd!aS)0s(DQXeRe3z`{P0H5WA%ZEUC59Jk#+t^#kINmDoqmIMZSIrVzZ; zsR>_32rml`;5uK=1U$d`<X~R zZ$Up)N2u!oQv)pEt; z$I%;g`0&+&a|}+JtuC2+8MBRoRg7^r^8GK?^f4wTvSWUwQ|Bp{0GRBO9?$^^V!tbof{iyw-N8ZnF^40~Jw_Ibjgxwe3}BUr(VORNhfRRd~Yy%kNs@ z$dyo!8}p0~&3r}?g?J|ZEW~#y8bRk>5JhoVMsprL@ARKqIi>F0rOww^4?8#}R$o@% zv-IMca6!#q@C9J=2s+f^&4F+KmF9L z8|_zYI`4o8Jln#DFPbwukK%)Lhs?Xo`R%GNR7AawV?X?gQ+u#hZN3x@9$oFEx$XJl tPzM{eQJuJ;Hn56z6_OM#b@b-M7_#ip?_Nl45tMx}5}{xWPN+4~{{cVFs5d^w#&KK`QV3Eo(lU?1$lJWjUlsUJ-|xa=!ECfQ%rCa&*AzQD9ZQ~S zTwgwS&VrK4+BNmI#VcECvs%~BGa576I~yOVZ7rGKxTLf!&%B}%wkl_t?PZJVTW!tt zRqHFVOIxaHnlq~BRduYaUQ|?U?<{UEx2~*OySjbO!}k0Ijx}Y*jQr+#)vdnYl)>R4 z6NT+)43`h#6VtrXYQdV9g+DDK9=Yjwm{ajErQl(lhDVMDk8Cv_S@C#ePQ@c*G9F?q z9)|IF=%esRkHBL_I38)Cc%&-vC&xh%_5Xi&Th2|I0_pL$V;{ zBAJm)NJgX_q--QIG7~8SiEK3>>5<6f8AxeJWI08g^pnNpgbt~I<5sYX$z*zwfE0s7 z)+ZxPL5f3~ghV{#BzZdlX(AH&t3e{8rz25d5|JX2$oVjO_FYxS34Ol=g^%OTbKH4; z8-GW!1frAw;k%f;nGbz3NI7}J1YUXo>^fseyVbs|$=YZGULOa~rbPRW>1OgM$#H^k z8&9sl7p}P~geOz=#MA$yg~7A~3SQ+qm|hVR@+~LKP^{#>^+@L<`Z@#^S6sZgZbwbN z5j+Rt;n|XSDE!h4~#3r ztAUuiGr-;-OTn4$na8WRx;ob*jLW+r70%601??&k_Sg;Z{jnsnZ5GmaxP2%Q=2hw7 z%DXz??V|6Msye00q{+^iX)@0=N&fJ<^TPzPfSb{HE3L>)cxA^xGdN!16l=7(Aha=g%8pU{DS2bK>{~ zC^-otgH&8i&1Rb%g||{tnmU^5#kG#Lwzf8_Xj|iG7p?W;8f$Z#&DJhDJDl~77Dqc| z?GoW+T^hhjJ^cHI1?HSFgL+>oG+#V1ULI7IM8QpOjvP!gHAW(MPMe_RyVMEDA5& z7xpChXGt1!viE}8*VMaB*g5W2kT2+~|J)ncX>erwBuJ_=!}+sGa$vu92r7Ylom1@K zU*TT&NZTSjt3s&c+(mN9mBxd%AfCli7!g_7`QA){!%-i-J{LXXhr7Y31#?xoa>5jiRH)+0iIAG~+MPNy%x%wA42@Ic@drw)T!T(b|9s z!Ynn}S@z)bPp82lZ!#2=rb1O`1XO+y1v^GCTN~6cP#R9ziW}_xSs9l-R?t*a0$;%i zZz!ty3a?bihjl5GN{)ABTZ{_0{c$SvpEbjtAw6_|qJ;%R>2R@MJDydf+1OPTjI8c* zV)eeIgGpx$(ATeq$99U?t`>ObsWf=!?>e|>*G9=AIkn@0xlk(>3N`D+Gg`U0&1Si{ z4|4n^?x0876VjC!N>(`Fqt*sc_s)f?rxW4Ncl7sMZ+0h#AWt`zor0l+>X-->t29tH zWPs*FdU$X^HmBu1GG#6dT+qXYPLa%smCZ3R|GBH2FpJ;9UG+$p!=%J;R4O?vMgcsf zYFJdKgR-**67suka%F`f%jO7TA#_?aYJiW{i9n^YaU_zN`oE4DtYd!rMGJfOl?Ngw z6{%3PE0awA{ICYGLk)YjQ=62<$R_2INj%@f@jYJY89vP25rGn0CevlS-2x70F(%gl zCky0D?fr6U2qLLPZ=Ke`)P61EjR`uwWOm;l<2;UknalG?hOn-sQK;H&XRczu?tWX1 z@FCaDOE)On2Ke<01M};f{TTW)fe={Swn!B1Sr>>>p*I71_M2EJZeEnF`0(-{Rj_)W z#^10B%-`-$G<}1CEHIY^oQjIuiZU+KBWc6jQ^uqI?qwEZ5bMU%J46^h8V@IqTflkE z0L7;?3}RBw>fl>6?N1M-!TD1J=z&n@O4DOdh2$g^gi0rm=R!qEG@*_^8|JR?Xk>9c zL@b4E`T$EGt5zDnVg5s);muhYZ6UGcE`{eX5BUY>uA<6rYiFQN9w)u_G4 zM%u}~-TOr7FZiQ;ADJyOklb@B4X7;^7FR=)*T9l+rH#2dS&jj-I|vs$ML7Q^cZo~( z6ip11ax|#EE5>3}BKWMpD~kNsnkSVd(W_!8I+Ot&N93_Re0`Qbq?Y?Zyf+fIkGOz3^3ZiP zd~|GKV4|V<*>cyd-~<=H!Ye(-hqx2*V}kE?K-Qq1LG|-^Nfz!%7q*Mgdx~Z>b-x*A zU1uv?pFIzKjVJ7&LMELXbf`g^P8O4J)4RBJu4gbx0izoQZh+RCBiw*T>JRIRNhcR8 zEyhsr_z^yTuO5c)#>1zB8IbVwSZk32Y4HqX??Tj-*?;RuV*}3cM$uT%mZu?$yOB(g zMiOAtIRo46l6Gq$Xru<5mvEq+N~Jtfa!_lIY*s2K%;&Cgsh*-KVN#(;_lWEsgyttc zkXs>hcx=w1pwa!f0okaNLK#f0-d6;F9d^OM89lUJ!ad)X#Kz#wi?~nXu7j&?U;xm) zl1Wdu#0JD^JkPpj0rla4X)H$qAI%9*E572ReK9`>ylQ?HN^QofQ?aVJu`UWK+te)H zH(PUIEzVSeug|_qgvaWV+4LF0uLb{pz%EY6L=_UwRTUgLRt@c!#_A4VXG?qry~Y8c zVzZ+6JX@-$lkhdmqJmq-zSSD|9xauN3} z*3@RyE)m~Hvg|#F3tjQ4azxk!TCh`~AXLTG*LPX$U9k( z1>5@Lu-53yFoSm6*qvxHez)R^zm(%&KqOe|kt$VEZ4iE(P*Jlr;P~KH*zrZ6vrS6` z+()s(FxU5v45QnjK&dT=A5iFB0?v~)Yyl4ReP9n67?ei`!P=v^n@qf`W1#-Nmo=9B I0b|bjKmYEioB#j- diff --git a/app/data/blog_test.sqlite b/app/data/blog_test.sqlite index e03dc5d6f0930680f716b33fbbd37b7baec60160..fcd4ff2ed05a25930aeaf06cf26d2e319a6d9b87 100644 GIT binary patch delta 4824 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 delta 4572 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 diff --git a/src/AppBundle/Entity/Post.php b/src/AppBundle/Entity/Post.php index 1d5663c7b..d34058850 100644 --- a/src/AppBundle/Entity/Post.php +++ b/src/AppBundle/Entity/Post.php @@ -86,8 +86,7 @@ class Post * @var Collection|Tag[] * * @ORM\ManyToMany( - * targetEntity="Tag", - * inversedBy="posts" + * targetEntity="Tag" * ) * @ORM\JoinTable(name="posts_tags") */ @@ -97,6 +96,7 @@ public function __construct() { $this->publishedAt = new \DateTime(); $this->comments = new ArrayCollection(); + $this->tags = new ArrayCollection(); } public function getId() @@ -193,6 +193,16 @@ public function setSummary($summary) $this->summary = $summary; } + /** + * Get tags + * + * @return Tag[]|Collection + */ + public function getTags() + { + return $this->tags; + } + /** * Add tag * @@ -202,7 +212,9 @@ public function setSummary($summary) */ public function addTag(Tag $tag) { - $this->tags[] = $tag; + if (!$this->hasTag($tag)) { + $this->tags->add($tag); + } return $this; } @@ -211,19 +223,25 @@ public function addTag(Tag $tag) * Remove tag * * @param Tag $tag + * + * @return Post */ public function removeTag(Tag $tag) { - $this->tags->removeElement($tag); + if (!$this->hasTag($tag)) { + $this->tags->removeElement($tag); + } + + return $this; } /** - * Get tags + * @param Tag $tag * - * @return Tag[]|Collection + * @return bool */ - public function getTags() + public function hasTag(Tag $tag) { - return $this->tags; + return $this->tags->contains($tag); } } diff --git a/src/AppBundle/Entity/Tag.php b/src/AppBundle/Entity/Tag.php index df7299d68..634dca43d 100644 --- a/src/AppBundle/Entity/Tag.php +++ b/src/AppBundle/Entity/Tag.php @@ -2,8 +2,6 @@ namespace AppBundle\Entity; -use Doctrine\Common\Collections\ArrayCollection; -use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; @@ -12,12 +10,9 @@ * * @ORM\Entity(repositoryClass="AppBundle\Repository\TagRepository") * - * Defines the properties of the User entity to represent the application users. + * Defines the properties of the Tag entity to represent the blog post tag. * See http://symfony.com/doc/current/book/doctrine.html#creating-an-entity-class * - * Tip: if you have an existing database, you can generate these entity class automatically. - * See http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html - * * @author Rasanga Perera */ class Tag @@ -34,26 +29,11 @@ class Tag /** * @var string * - * @ORM\Column(name="tag_name", type="string", length=255) + * @ORM\Column(type="string", length=255) * @Assert\NotBlank() */ private $name; - /** - * @var Collection|Post[] - * - * @ORM\ManyToMany( - * targetEntity="Post", - * mappedBy="tags" - * ) - */ - private $posts; - - public function __construct() - { - $this->posts = new ArrayCollection(); - } - /** * Get id * @@ -87,38 +67,4 @@ public function getName() { return $this->name; } - - /** - * Add post - * - * @param Post $post - * - * @return Tag - */ - public function addPost(Post $post) - { - $this->posts[] = $post; - - return $this; - } - - /** - * Remove post - * - * @param Post $post - */ - public function removePost(Post $post) - { - $this->posts->removeElement($post); - } - - /** - * Get posts - * - * @return Post[]|Collection - */ - public function getPosts() - { - return $this->posts; - } } From ec70fbd1ba0c662d01771dba41154e0604b0095d Mon Sep 17 00:00:00 2001 From: Rasanga Perera Date: Fri, 11 Sep 2015 22:54:04 +0530 Subject: [PATCH 6/7] remove doctrine fixture referencing on the same class --- .../DataFixtures/ORM/LoadFixtures.php | 147 ++++++++---------- 1 file changed, 69 insertions(+), 78 deletions(-) diff --git a/src/AppBundle/DataFixtures/ORM/LoadFixtures.php b/src/AppBundle/DataFixtures/ORM/LoadFixtures.php index 0f33fa2ec..9e7da6389 100644 --- a/src/AppBundle/DataFixtures/ORM/LoadFixtures.php +++ b/src/AppBundle/DataFixtures/ORM/LoadFixtures.php @@ -44,9 +44,11 @@ class LoadFixtures extends AbstractFixture implements FixtureInterface, Containe public function load(ObjectManager $manager) { $this->loadUsers($manager); - $this->loadPosts($manager); - $this->loadTags($manager); - $this->loadPostsTags($manager); + $this->loadPostsTags( + $manager, + $this->loadPosts($manager), + $this->loadTags($manager) + ); } private function loadUsers(ObjectManager $manager) @@ -71,8 +73,15 @@ private function loadUsers(ObjectManager $manager) $manager->flush(); } + /** + * @param ObjectManager $manager + * + * @return array + */ private function loadPosts(ObjectManager $manager) { + $posts = array(); + foreach (range(1, 10) as $i) { $post = new Post(); @@ -97,14 +106,22 @@ private function loadPosts(ObjectManager $manager) $manager->persist($post); - $this->addReference('post-' . $i, $post); + $posts[] = $post; } $manager->flush(); + + return $posts; } + /** + * @param ObjectManager $manager + * + * @return array + */ private function loadTags(ObjectManager $manager) { + $tags = array(); $tagNames = array( 'Lorem', 'ipsum', @@ -121,85 +138,59 @@ private function loadTags(ObjectManager $manager) $manager->persist($tag); - $this->addReference('tag-' . ++$key, $tag); + $tags[] = $tag; } $manager->flush(); + + return $tags; } - private function loadPostsTags(ObjectManager $manager) - { - /** @var Post $post1 */ - $post1 = $this->getReference('post-1'); - /** @var Post $post2 */ - $post2 = $this->getReference('post-2'); - /** @var Post $post3 */ - $post3 = $this->getReference('post-3'); - /** @var Post $post4 */ - $post4 = $this->getReference('post-4'); - /** @var Post $post5 */ - $post5 = $this->getReference('post-5'); - /** @var Post $post6 */ - $post6 = $this->getReference('post-6'); - /** @var Post $post7 */ - $post7 = $this->getReference('post-7'); - /** @var Post $post8 */ - $post8 = $this->getReference('post-8'); - /** @var Post $post9 */ - $post9 = $this->getReference('post-9'); - /** @var Post $post10 */ - $post10 = $this->getReference('post-10'); - - /** @var Tag $tag1 */ - $tag1 = $this->getReference('tag-1'); - /** @var Tag $tag2 */ - $tag2 = $this->getReference('tag-2'); - /** @var Tag $tag3 */ - $tag3 = $this->getReference('tag-3'); - /** @var Tag $tag4 */ - $tag4 = $this->getReference('tag-4'); - /** @var Tag $tag5 */ - $tag5 = $this->getReference('tag-5'); - /** @var Tag $tag6 */ - $tag6 = $this->getReference('tag-6'); - /** @var Tag $tag7 */ - $tag7 = $this->getReference('tag-7'); - - $post1->addTag($tag1); - $post1->addTag($tag3); - $manager->persist($post1); - - $post2->addTag($tag2); - $manager->persist($post2); - - $post3->addTag($tag3); - $post3->addTag($tag4); - $post3->addTag($tag5); - $manager->persist($post3); - - $post4->addTag($tag6); - $post4->addTag($tag7); - $manager->persist($post4); - - $post5->addTag($tag1); - $manager->persist($post5); - - $post6->addTag($tag1); - $manager->persist($post6); - - $post7->addTag($tag3); - $manager->persist($post7); - - $post8->addTag($tag5); - $post8->addTag($tag7); - $manager->persist($post8); - - $post9->addTag($tag1); - $manager->persist($post9); - - $post10->addTag($tag4); - $post10->addTag($tag6); - $manager->persist($post10); + /** + * @param ObjectManager $manager + * @param array|Post[] $posts + * @param array|Tag[] $tags + */ + private function loadPostsTags( + ObjectManager $manager, + array $posts, + array $tags + ) { + $posts[0]->addTag($tags[0]); + $posts[0]->addTag($tags[2]); + $manager->persist($posts[0]); + + $posts[1]->addTag($tags[1]); + $manager->persist($posts[1]); + + $posts[2]->addTag($tags[2]); + $posts[2]->addTag($tags[3]); + $posts[2]->addTag($tags[4]); + $manager->persist($posts[2]); + + $posts[3]->addTag($tags[5]); + $posts[3]->addTag($tags[6]); + $manager->persist($posts[3]); + + $posts[4]->addTag($tags[0]); + $manager->persist($posts[4]); + + $posts[5]->addTag($tags[0]); + $manager->persist($posts[5]); + + $posts[6]->addTag($tags[2]); + $manager->persist($posts[6]); + + $posts[7]->addTag($tags[4]); + $posts[7]->addTag($tags[6]); + $manager->persist($posts[7]); + + $posts[8]->addTag($tags[0]); + $manager->persist($posts[8]); + + $posts[9]->addTag($tags[3]); + $posts[9]->addTag($tags[5]); + $manager->persist($posts[9]); $manager->flush(); } From 5047756525fbe3722786163a21b561deb90de738 Mon Sep 17 00:00:00 2001 From: Rasanga Perera Date: Sat, 12 Sep 2015 13:46:48 +0530 Subject: [PATCH 7/7] add tags on the post list and show views (refactoring) --- app/Resources/views/blog/index.html.twig | 13 ++++++++----- app/Resources/views/blog/post_show.html.twig | 13 +++++++------ src/AppBundle/DataFixtures/ORM/LoadFixtures.php | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/app/Resources/views/blog/index.html.twig b/app/Resources/views/blog/index.html.twig index e8a290ae9..76ad570f7 100644 --- a/app/Resources/views/blog/index.html.twig +++ b/app/Resources/views/blog/index.html.twig @@ -10,11 +10,14 @@ {{ post.title }} -

- {% for tag in post.tags %} - {{ tag.name }} - {% endfor %} -

+ {% if 0 < post.tags | length %} +

+ {% for tag in post.tags %} + {{ tag.name }} + {% endfor %} +

+ {% endif %} + {{ post.summary|md2html }} {% else %} diff --git a/app/Resources/views/blog/post_show.html.twig b/app/Resources/views/blog/post_show.html.twig index f8bd4a105..a576de048 100644 --- a/app/Resources/views/blog/post_show.html.twig +++ b/app/Resources/views/blog/post_show.html.twig @@ -5,12 +5,13 @@ {% block main %}

{{ post.title }}

-

- {% if 0 < post.tags | length %}Tags: {% endif %} - {% for tag in post.tags %} - {{ tag.name }} - {% endfor %} -

+ {% if 0 < post.tags | length %} +

Tags: + {% for tag in post.tags %} + {{ tag.name }} + {% endfor %} +

+ {% endif %} {{ post.content|md2html }} diff --git a/src/AppBundle/DataFixtures/ORM/LoadFixtures.php b/src/AppBundle/DataFixtures/ORM/LoadFixtures.php index 9e7da6389..3dfb16d16 100644 --- a/src/AppBundle/DataFixtures/ORM/LoadFixtures.php +++ b/src/AppBundle/DataFixtures/ORM/LoadFixtures.php @@ -33,7 +33,7 @@ * @author Javier Eguiluz * @author Rasanga Perera */ -class LoadFixtures extends AbstractFixture implements FixtureInterface, ContainerAwareInterface +class LoadFixtures implements FixtureInterface, ContainerAwareInterface { /** @var ContainerInterface */ private $container;