Laravel Likeable is a package designed to add like and dislike functionality to your Laravel applications. It allows users to easily express their opinions on content (such as posts, comments, or any other models) by liking or disliking them, enhancing user engagement on your platform.
Key Features
- Easy Integration: Simple setup to add like/dislike functionality to your Eloquent models.
- Flexible: Can be used with various models, such as posts, comments, or any custom model.
- User-Friendly: Allows users to like or dislike content with ease, improving interaction.
- Statistics: Get statistics on likes and dislikes, allowing you to analyze user engagement.
Installation
To install Laravel Likeable, you can use Composer. Run the following command in your terminal:
bash
1 |
composer require "kordy/laravel-likeable" |
Configuration
After installing the package, you need to publish the configuration file and migrations:
bash
1 |
php artisan vendor:publish --provider="Kordy\Likeable\LikeableServiceProvider" |
This will create the necessary configuration file and migration files.
Migration
Run the migrations to create the likes
table in your database:
bash
1 |
php artisan migrate |
Setting Up Your Model
To enable likeable functionality in your model, you need to use the Likeable
trait. For example, if you want to add like functionality to a Post
model, your model should look like this:
php
1 2 3 4 5 6 7 8 9 10 11 |
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Kordy\Likeable\Likeable; class Post extends Model { use Likeable; // Your model properties and methods here } |
Liking and Disliking
With Laravel Likeable, you can easily implement the like and dislike functionality in your controllers or routes.
Liking a Post
You can like a post using the like
method:
php
1 2 |
$post = Post::find($postId); $post->like($userId); // Like the post |
Disliking a Post
Similarly, you can dislike a post:
php
1 |
$post->dislike($userId); // Dislike the post |
Removing a Like or Dislike
To remove a like or dislike from a post, you can use the unlike
or undislike
methods:
php
1 2 |
$post->unlike($userId); // Remove like $post->undislike($userId); // Remove dislike |
Checking Likes and Dislikes
You can check if a user has liked or disliked a post:
php
1 2 3 4 5 6 7 |
if ($post->isLikedBy($userId)) { // User has liked the post } if ($post->isDislikedBy($userId)) { // User has disliked the post } |
Retrieving Likes and Dislikes
You can retrieve the total number of likes and dislikes for a post:
php
1 2 |
$totalLikes = $post->likes()->count(); $totalDislikes = $post->dislikes()->count(); |
Example Usage
Here’s a simple example of how you might implement liking functionality in a controller method:
php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
namespace App\Http\Controllers; use App\Models\Post; use Illuminate\Http\Request; class PostController extends Controller { public function like(Request $request, $id) { $post = Post::findOrFail($id); $post->like($request->user()->id); return response()->json(['message' => 'Post liked successfully!', 'likes' => $post->likes()->count()]); } public function dislike(Request $request, $id) { $post = Post::findOrFail($id); $post->dislike($request->user()->id); return response()->json(['message' => 'Post disliked successfully!', 'dislikes' => $post->dislikes()->count()]); } } |
Conclusion
Laravel Likeable makes it easy to add like and dislike functionality to your Laravel applications. By following the steps outlined above, you can quickly integrate this feature and enhance user engagement on your platform.
- Laravel Breeze – Simple authentication starter kit
- Laravel Jetstream – Scaffolding for Laravel apps
- Laravel Passport – API authentication via OAuth2
- Laravel Sanctum – Simple API authentication
- Spatie Laravel Permission – Role and permission management
- Laravel Cashier – Subscription billing with Stripe
- Laravel Scout – Full-text search using Algolia
- Laravel Socialite – OAuth authentication (Google, Facebook, etc.)
- Laravel Excel – Excel import and export for Laravel
- Laravel Horizon – Redis queues monitoring
- Laravel Nova – Admin panel for Laravel
- Laravel Fortify – Backend authentication for Laravel
- Laravel Vapor – Serverless deployment on AWS
- Laravel Telescope – Debugging assistant for Laravel
- Laravel Dusk – Browser testing
- Laravel Mix – API for compiling assets
- Spatie Laravel Backup – Backup management
- Laravel Livewire – Building dynamic UIs
- Spatie Laravel Media Library – Manage media uploads
- Laravel Excel – Excel spreadsheet handling
- Laravel Debugbar – Debug tool for Laravel
- Laravel WebSockets – Real-time communication
- Spatie Laravel Sitemap – Generate sitemaps
- Laravel Spark – SaaS scaffolding
- Laravel Envoy – Task runner for deployment
- Spatie Laravel Translatable – Multilingual model support
- Laravel Backpack – Admin panel
- Laravel AdminLTE – Admin interface template
- Laravel Collective Forms & HTML – Simplified form and HTML generation
- Spatie Laravel Analytics – Google Analytics integration
- Laravel Eloquent Sluggable – Automatically create slugs
- Laravel Charts – Chart integration
- Laravel Auditing – Track changes in models
- Laravel JWT Auth – JSON Web Token authentication
- Laravel Queue Monitor – Monitor job queues
- Spatie Laravel Query Builder – Filter, sort, and include relationships in Eloquent queries
- Laravel Datatables – jQuery Datatables API
- Laravel Localization – Multilingual support for views and routes
- Laravel Acl Manager – Access control list manager
- Laravel Activity Log – Record activity in your app
- Laravel Roles – Role-based access control
- Spatie Laravel Tags – Tagging models
- Laravel Installer – CLI installer for Laravel
- Laravel Breadcrumbs – Generate breadcrumbs in Laravel
- Laravel Mailgun – Mailgun integration for Laravel
- Laravel Trustup Model History – Store model change history
- Laravel Deployer – Deployment automation tool
- Laravel Auth – Custom authentication guards
- Laravel CORS – Cross-Origin Resource Sharing (CORS) support
- Laravel Notifications – Send notifications through multiple channels
- Spatie Laravel Http Logger – Log HTTP requests
- Laravel Permission Manager – Manage permissions easily
- Laravel Stubs – Customize default stubs in Laravel
- Laravel Fast Excel – Speed up Excel exports
- Laravel Image – Image processing
- Spatie Laravel Backup Server – Centralize backups for Laravel apps
- Laravel Forge API – Manage servers through the Forge API
- Laravel Blade SVG – Use SVGs in Blade templates
- Laravel Ban – Ban/unban users from your application
- Laravel API Response – Standardize API responses
- Laravel SEO – Manage SEO meta tags
- Laravel Settings – Store and retrieve settings
- Laravel DOMPDF – Generate PDFs
- Laravel Turbo – Full-stack framework for building modern web apps
- Spatie Laravel Event Sourcing – Event sourcing implementation
- Laravel Jetstream Inertia – Jetstream’s Inertia.js integration
- Laravel Envoy Tasks – Task automation
- Laravel Likeable – Like/dislike functionality
- Laravel GeoIP – Determine visitor’s geographic location
- Laravel Country State City – Dropdowns for country, state, and city
- Laravel Hashids – Generate short unique hashes
- Laravel Repository – Repository pattern for Laravel
- Laravel UUID – UUID generation for models
- Spatie Laravel Medialibrary Pro – Enhanced media management
- Laravel Queue Monitor – Monitor Laravel job queues
- Laravel User Activity – Monitor user activity
- Laravel DB Snapshots – Create database snapshots
- Laravel Twilio – Twilio integration
- Laravel Roles – Role-based permission handling
- Laravel Translatable – Add translations to Eloquent models
- Laravel Teamwork – Manage teams in multi-tenant apps
- Laravel Full Text Search – Add full-text search to Laravel models
- Laravel File Manager – File and media management
- Laravel User Timezones – Automatically detect user time zones
- Laravel ChartsJS – Render charts with ChartsJS
- Laravel Stripe – Stripe API integration
- Laravel PDF Generator – PDF generation
- Laravel Elasticsearch – Elasticsearch integration
- Laravel Simple Qrcode – Generate QR codes
- Laravel Timezone – Manage timezones and conversions
- Laravel Collective API – API management for Laravel
- Laravel Rest API Boilerplate – REST API starter kit
- Laravel Multi Auth – Multi-authentication functionality
- Laravel Voyager – Admin panel for Laravel
- Laravel Voyager Database – Database manager for Voyager
- Laravel Categories – Handle categories for models
- Laravel Multitenancy – Multi-tenancy implementation
- Laravel Access Control – Advanced access control for users
- Laravel Menus – Menu management
- Laravel Translatable Routes – Multilingual route handling