Add a like button #19
@@ -84,9 +84,16 @@ class Post
|
|||||||
#[ORM\OneToMany(targetEntity: Comment::class, mappedBy: 'related_post', fetch: 'EXTRA_LAZY')]
|
#[ORM\OneToMany(targetEntity: Comment::class, mappedBy: 'related_post', fetch: 'EXTRA_LAZY')]
|
||||||
private Collection $comments;
|
private Collection $comments;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Collection<int, User>
|
||||||
|
*/
|
||||||
|
#[ORM\ManyToMany(targetEntity: User::class, inversedBy: 'liked_post')]
|
||||||
|
private Collection $likes;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->comments = new ArrayCollection();
|
$this->comments = new ArrayCollection();
|
||||||
|
$this->likes = new ArrayCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getId(): ?int
|
public function getId(): ?int
|
||||||
@@ -256,4 +263,28 @@ class Post
|
|||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Collection<int, User>
|
||||||
|
*/
|
||||||
|
public function getLikes(): Collection
|
||||||
|
{
|
||||||
|
return $this->likes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addLike(User $user): static
|
||||||
|
{
|
||||||
|
if (!$this->likes->contains($user)) {
|
||||||
|
$this->likes->add($user);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removeLike(User $user): static
|
||||||
|
{
|
||||||
|
$this->likes->removeElement($user);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -68,9 +68,16 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||||||
#[ORM\OneToMany(targetEntity: Comment::class, mappedBy: 'author')]
|
#[ORM\OneToMany(targetEntity: Comment::class, mappedBy: 'author')]
|
||||||
private Collection $comments;
|
private Collection $comments;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Collection<int, Post>
|
||||||
|
*/
|
||||||
|
#[ORM\ManyToMany(targetEntity: Post::class, mappedBy: 'likes')]
|
||||||
|
private Collection $liked_post;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->comments = new ArrayCollection();
|
$this->comments = new ArrayCollection();
|
||||||
|
$this->liked_post = new ArrayCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getId(): ?int
|
public function getId(): ?int
|
||||||
@@ -189,4 +196,31 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Collection<int, Post>
|
||||||
|
*/
|
||||||
|
public function getLikedPost(): Collection
|
||||||
|
{
|
||||||
|
return $this->liked_post;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addLikedPost(Post $likedPost): static
|
||||||
|
{
|
||||||
|
if (!$this->liked_post->contains($likedPost)) {
|
||||||
|
$this->liked_post->add($likedPost);
|
||||||
|
$likedPost->addLike($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removeLikedPost(Post $likedPost): static
|
||||||
|
{
|
||||||
|
if ($this->liked_post->removeElement($likedPost)) {
|
||||||
|
$likedPost->removeLike($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user