PHP code example of eslamfaroug / laravel-like-dislike
1. Go to this page and download the library: Download eslamfaroug/laravel-like-dislike library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
eslamfaroug / laravel-like-dislike example snippets
php artisan vendor:publish
php artisan vendor:publish
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use EslamFaroug\LaravelLikeDislike\Traits\Liker;
class User extends Authenticatable
{
use Liker;
<...>
}
use Illuminate\Database\Eloquent\Model;
use EslamFaroug\LaravelLikeDislike\Traits\Likeable;
class Post extends Model
{
use Likeable;
<...>
}
$user = User::find(1);
$post = Post::find(2);
$user->like($post);
$user->unlike($post);
$user->toggleLike($post);
$user->hasLiked($post);
$post->isLikedBy($user);
$user->dislike($post);
$user->undislike($post);
$user->toggleDislike($post);
$user->hasDisliked($post);
$post->isDislikedBy($user);
$likes = $user->likes()->with('likeable')->paginate(20);
foreach ($likes as $like) {
$like->likeable; // App\Post instance
}
$dislikes = $user->dislikes()->with('likeable')->paginate(20);
foreach ($dislikes as $dislike) {
$dislike->likeable; // App\Post instance
}
foreach($post->likers as $user) {
// echo $user->name;
}
foreach($post->dislikers as $user) {
// echo $user->name;
}
$likers = $post->likers()->paginate(20);
foreach($likers as $user) {
// echo $user->name;
}
$dislikers = $post->dislikers()->paginate(20);
foreach($dislikers as $user) {
// echo $user->name;
}
// Likes
// all
$user->likes()->count();
// with type
$user->likes()->withType(Post::class)->count();
// likers count
$post->likers()->count();
// Dislikes
// all
$user->dislikes()->count();
// with type
$user->dislikes()->withType(Post::class)->count();
// likers count
$post->dislikers()->count();
// likes_count
$users = User::withCount('likes')->get();
foreach($users as $user) {
// $user->likes_count;
}
// dislikes_count
$users = User::withCount('dislikes')->get();
foreach($users as $user) {
// $user->dislikes_count;
}
// likers_count
$posts = User::withCount('likers')->get();
foreach($posts as $post) {
// $post->likes_count;
}
// dislikers_count
$posts = User::withCount('dislikers')->get();
foreach($posts as $post) {
// $post->dislikes_count;
}
// Liker
$users = App\User::with('likes')->get();
foreach($users as $user) {
$user->hasLiked($post);
}
// Disliker
$users = App\User::with('dislikes')->get();
foreach($users as $user) {
$user->hasDisliked($post);
}
// Likeable
$posts = App\Post::with('likes')->get();
// or
$posts = App\Post::with('likers')->get();
foreach($posts as $post) {
$post->isLikedBy($user);
}
$posts = App\Post::with('dislikes')->get();
// or
$posts = App\Post::with('dislikers')->get();
foreach($posts as $post) {
$post->isDislikedBy($user);
}
$post = Post::find(1);
$post = $user->attachLikeStatus($post);
// result
[
"id" => 1
"title" => "Add socialite login support."
"created_at" => "2021-05-20T03:26:16.000000Z"
"updated_at" => "2021-05-20T03:26:16.000000Z"
"has_liked" => true
],
$post = Post::find(1);
$post = $user->attachDislikeStatus($post);
// result
[
"id" => 1
"title" => "Add socialite login support."
"created_at" => "2021-05-20T03:26:16.000000Z"
"updated_at" => "2021-05-20T03:26:16.000000Z"
"has_disliked" => true
],
$posts = Post::oldest('id')->get();
$posts = $user->attachLikeStatus($posts);
$posts = $posts->toArray();
// result
[
[
"id" => 1
"title" => "Post title1"
"created_at" => "2021-05-20T03:26:16.000000Z"
"updated_at" => "2021-05-20T03:26:16.000000Z"
"has_liked" => true
],
[
"id" => 2
"title" => "Post title2"
"created_at" => "2021-05-20T03:26:16.000000Z"
"updated_at" => "2021-05-20T03:26:16.000000Z"
"has_liked" => fasle
],
[
"id" => 3
"title" => "Post title3"
"created_at" => "2021-05-20T03:26:16.000000Z"
"updated_at" => "2021-05-20T03:26:16.000000Z"
"has_liked" => true
],
]
$posts = Post::oldest('id')->get();
$posts = $user->attachDislikeStatus($posts);
$posts = $posts->toArray();
// result
[
[
"id" => 1
"title" => "Post title1"
"created_at" => "2021-05-20T03:26:16.000000Z"
"updated_at" => "2021-05-20T03:26:16.000000Z"
"has_disliked" => true
],
[
"id" => 2
"title" => "Post title2"
"created_at" => "2021-05-20T03:26:16.000000Z"
"updated_at" => "2021-05-20T03:26:16.000000Z"
"has_disliked" => fasle
],
[
"id" => 3
"title" => "Post title3"
"created_at" => "2021-05-20T03:26:16.000000Z"
"updated_at" => "2021-05-20T03:26:16.000000Z"
"has_disliked" => true
],
]
$posts = Post::paginate(20);
$user->attachLikeStatus($posts);
$posts = Post::paginate(20);
$user->attachDislikeStatus($posts);