سلام من
remove like و remove dislike رو به شکل زیر پیاده کردم
public function likedBy(User $user)
{
if ($this->isLikedBy($user)) {
return $this->removeLike($user);
}
return $this->likes()->create([
'user_id' => auth()->id(),
'vote' => 1
]);
}
public function dislikedBy(User $user)
{
if ($this->isDislikedBy($user)) {
return $this->removeDislike($user);
}
return $this->likes()->create([
'user_id' => auth()->id(),
'vote' => -1,
]);
}
public function isLikedBy(User $user)
{
return $this->likes()
->where('vote', 1)
->where('user_id', $user->id)
->exists();
}
public function isDislikedBy(User $user)
{
return $this->likes()
->where('vote', -1)
->where('user_id', $user->id)
->exists();
}
public function removeLike(User $user)
{
return $this->likes()->where('vote', 1)
->where('user_id', $user->id)->delete();
}
public function removeDislike(User $user)
{
return $this->likes()
->where('vote', -1)
->where('user_id', $user->id)->delete();
}