CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

11 April, 2022

Add Likes, Bookmarks, Favorites, and Other Marks With Laravel Markable

 Programing Coderfunda     April 11, 2022     Laravel, Packages     No comments   

 Laravel Markable is a package to Integrate likes, bookmarks, favorites, reactions, and custom-made marks into your application.

The basic usage is adding a Markable trait and types of "marks" you want to allow for a given model. For example, if you have a Course model and you want to let users like the course:

1namespace App\Models;
2 
3use Illuminate\Database\Eloquent\Model;
4use Maize\Markable\Markable;
5use Maize\Markable\Models\Like;
6 
7class Course extends Model
8{
9 use Markable;
10 
11 protected $fillable = [
12 'title',
13 'description',
14 ];
15 
16 protected static $marks = [
17 Like::class,
18 ];
19}

With that model in place, here's what it looks like to manage marks using this package:

1use App\Models\Course;
2use Maize\Markable\Models\Like;
3 
4// marks the course liked for the given user
5Like::add($course, $user);
6 
7// unmarks the course liked for the given user
8Like::remove($course, $user);
9 
10// toggles the course like for the given user
11Like::toggle($course, $user);
12 
13// returns whether the given user likes a course or not
14Like::has($course, $user);
15 
16// returns how many users like a course
17Like::count($course);

The Like model is built-in to the package, but you can also build custom mark models, such as Pledge that allows a user to pledge a donation to a cause.

The package includes various mark types out-of-the-box, including:

  • Bookmark
  • Favorite
  • Like
  • Reaction

On the other side of adding a Like for a user, you might what to list all likes for a given user so they can see what courses they've liked:

1// All course models with a like from the given user
2Course::whereHasLike(
3 auth()->user()
4)->get();
5 
6// All post models with a 'heart' reaction from the given user
7Post::whereHasReaction(
8 auth()->user(),
9 'heart'
10)->get();

You can learn more about this package, get full installation instructions, and view the source code on GitHub.Laravel Markable is a package to Integrate likes, bookmarks, favorites, reactions, and custom-made marks into your application.

The basic usage is adding a Markable trait and types of "marks" you want to allow for a given model. For example, if you have a Course model and you want to let users like the course:

1namespace App\Models;
2 
3use Illuminate\Database\Eloquent\Model;
4use Maize\Markable\Markable;
5use Maize\Markable\Models\Like;
6 
7class Course extends Model
8{
9 use Markable;
10 
11 protected $fillable = [
12 'title',
13 'description',
14 ];
15 
16 protected static $marks = [
17 Like::class,
18 ];
19}

With that model in place, here's what it looks like to manage marks using this package:

1use App\Models\Course;
2use Maize\Markable\Models\Like;
3 
4// marks the course liked for the given user
5Like::add($course, $user);
6 
7// unmarks the course liked for the given user
8Like::remove($course, $user);
9 
10// toggles the course like for the given user
11Like::toggle($course, $user);
12 
13// returns whether the given user likes a course or not
14Like::has($course, $user);
15 
16// returns how many users like a course
17Like::count($course);

The Like model is built-in to the package, but you can also build custom mark models, such as Pledge that allows a user to pledge a donation to a cause.

The package includes various mark types out-of-the-box, including:

  • Bookmark
  • Favorite
  • Like
  • Reaction

On the other side of adding a Like for a user, you might what to list all likes for a given user so they can see what courses they've liked:

1// All course models with a like from the given user
2Course::whereHasLike(
3 auth()->user()
4)->get();
5 
6// All post models with a 'heart' reaction from the given user
7Post::whereHasReaction(
8 auth()->user(),
9 'heart'
10)->get();

You can learn more about this package, get full installation instructions, and view the source code on GitHub.

  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook

Related Posts:

  • Output Eloquent Builder SQL to Your Favorite Debugging Tool Laravel showsql is a package to output model SQL queries to your favorite debugging tool or the browser:1Menu::whereHas('status')2 … Read More
  • Blade Component to Render Markdown in Laravel Laravel Markdown is a highly configurable markdown renderer and Blade component for Laravel by the folks at Spatie:The package feature… Read More
  • Ban Eloquent Models With the Laravel Ban Package Laravel Ban is a package that simplifies blocking and banning Eloquent models. Using this package, you can make a model "bannable" in minut… Read More
  • Track the Health of Your Application With Laravel Health Laravel Health is a package by Spatie to monitor the health of your applications. You accomplish this by configuring one or … Read More
  • Blade Component to Serve Images and Download Files Smart makes it possible to serve images and download files from any location, including Laravel disks within a Laravel application. It enab… Read More
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh
    I had follow these steps to install an configure firebase to my cordova project for cloud messaging. https://medium.com/@felipepucinelli/how...
  • Spring boot app (error: method getFirst()) failed to run at local machine, but can run on server
    The Spring boot app can run on the online server. Now, we want to replicate the same app at the local machine but the Spring boot jar file f...
  • Log activity in a Laravel app with Spatie/Laravel-Activitylog
      Requirements This package needs PHP 8.1+ and Laravel 9.0 or higher. The latest version of this package needs PHP 8.2+ and Laravel 8 or hig...
  • Step-by-step guide to linking gnuplot to Octave within Virtual Studio Code (VSC)
    I am aware of a number of previous questions (here, here and here for example) pointing out to the need to modify a file named .octaverc. ...
  • Laravel auth login with phone or email
          <?php     Laravel auth login with phone or email     <? php     namespace App \ Http \ Controllers \ Auth ;         use ...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (68)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh - 9/21/2024
  • pyspark XPath Query Returns Lists Omitting Missing Values Instead of Including None - 9/20/2024
  • SQL REPL from within Python/Sqlalchemy/Psychopg2 - 9/20/2024
  • MySql Explain with Tobias Petry - 9/20/2024
  • How to combine information from different devices into one common abstract virtual disk? [closed] - 9/20/2024

Laravel News

  • Track Metrics Effortlessly with Laravel's Context Increment and Decrement Methods - 5/4/2025
  • NativePHP Hit $100K — And We're Just Getting Started 🚀 - 5/8/2025
  • Name Queued Closures in Laravel 12.13 - 5/9/2025
  • Simplify HasManyThrough Relationships with Laravel's CanBeOneOfMany Support - 5/4/2025
  • Using Database Comments to Track Columns With Sensitive Data - 5/7/2025

Copyright © 2025 CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda