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

29 November, 2022

A Package for Ratings to be added to any Laravel Model

 Programing Coderfunda     November 29, 2022     Laravel, laravel-packages, php     No comments   

 


Cjmellor/rating is a Laravel package that allows for ratings to be added to a Model Imagine you have a Recipes Model and want your users to rate your culinary delights. This package allows you to achieve this.

Installation

You can install the package via composer:

composer require cjmellor/rating

You can publish and run the migrations with the following:

php artisan vendor:publish --tag="rating-migrations"
php artisan migrate

You can publish the config file with:

php artisan vendor:publish --tag="rating-config"

Usage

To rate a Model, you must add the CanBeRated trait to the Model in question.

use Cjmellor\Rating\Concerns\CanBeRated;

class Recipe extends Model
{
    use CanBeRated;

    // ...
}

Now you can rate this Model:

$recipe = Recipe::find(1);

$recipe->rate(score: 2);

You can view how many ratings a particular Model has:

$recipe->ratings;

// this will return a Collection

You can get an overall percentage of the amount of Users' who have rated a Model:

Imagine you want a five-star rating system, and you have a Model that has been rated a 3 and a 5 by two Users'

$recipe->ratingPercent(maxLength: 5);

// 80.0

This will equate to 80%. A float is returned. Changing the maxLength will recalculate the percentage.

The package comes with a bunch of Attributes that you can use. The results of these are based on a single Model rated by two Users' with 3 and 5 ratings.

$recipe->averageRating; // "4.0000"
$recipe->averageRatingByUser; // "5.0000"
$recipe->averageSumOfUser; // 5
$recipe->ratedByUsers; // 2
$recipe->ratedInTotal; // 2
$recipe->sumRating; // "8" 

Blade Component

The package comes with an optional blade component for displaying the Models' ratings.

You must publish the file to get access to it

php artisan vendor:publish --tag="rating-component"

You can now use the new component:

<x-show-rating score="80.0" />

The component has customizable attributes:

public string $color = 'text-yellow-400',
public string $family = 'FontAwesome',
public $innerStars = '\f005 \f005 \f005 \f005 \f005',
public $outerStars = '\f006 \f006 \f006 \f006 \f006',
public float $score = 0.0,
public string $textSize = 'text-2xl',

For more details about this package, Please visit Github.

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

Related Posts:

  • Serialization for Eloquent's QueryBuilder Eloquent Serialize is a Laravel package to serialize and unserialize Eloquent query builder objects. The EloquentSerialize servic… Read More
  • Crawl and Index Your Website with Laravel Site Search Laravel Site Search is a package by Spatie to create a full-text search index by crawling your site. You can think of it as a private Googl… Read More
  • Laravel Subscribable Notifications Laravel Subscribable Notifications is a package by Andrés Santibáñez that allows you to subscribe your app's users to your a… Read More
  • Use the Shopify API in Laravel With the Laravel Shopify Package Use the Shopify API in Laravel With the Laravel Shopify PackageLaravel Shopify is a package to communicate with the Shopify API from Larave… Read More
  • Toast Notifications for the TALL Stack LL Toasts is a toast notification library for the Laravel TALL stack (Tailwind, Alpine.js, Laravel, Livewire). What makes this package stan… Read More
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Vue3 :style backgroundImage not working with require
    I'm trying to migrate a Vue 2 project to Vue 3. In Vue 2 I used v-bind style as follow: In Vue 3 this doesn't work... I tried a...
  • SQL ORDER BY Keyword
      The SQL ORDER BY Keyword The ORDER BY keyword is used to sort the result-set in ascending or descending order. The ORDER BY keyword sorts ...
  • Enabling authentication in swagger
    I created a asp.net core empty project running on .net6. I am coming across an issue when I am trying to enable authentication in swagger. S...
  • failed to load storage framework cache laravel excel
       User the export file and controller function  ..         libxml_use_internal_errors ( true ); ..Good To Go   public function view () : ...
  • AdminJS not overriding default dashboard with custom React component
    So, I just started with adminjs and have been trying to override the default dashboard with my own custom component. I read the documentatio...

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

  • A Blade-Only Starter Kit for Laravel 12 Projects - 5/30/2025
  • PHPVerse with Brent Roose - 5/30/2025
  • Verify Nested Relations Efficiently with Laravel's Enhanced relationLoaded Method - 5/25/2025
  • ElasticLens: Eloquent-Powered Elasticsearch for Laravel - 5/29/2025
  • Compare Collection Keys with Laravel's diffKeys Method - 5/25/2025

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