dgvai/laravel-user-review

A Laravel Package for User Review on Models, like Product review for ecommerce systems.

Installs: 2 172

Dependents: 0

Suggesters: 0

Security: 0

Stars: 35

Watchers: 3

Forks: 13

Open Issues: 2

Type:laravel-package

v2 2022-12-14 14:48 UTC

This package is auto-updated.

Last update: 2024-10-14 19:12:21 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

This package uses a trait for a model which can be reviewable by users and give starred/point ratings and only one reply can come from admin as a support response. (like Google playstore review system). This package can be used with any projects like Ecommerce, Shop, Store, etc models.

Author: Jalal Uddin Github | Linked-in | Facebook

Requirements

  • PHP >= 7.1
  • Laravel >= 5.6

Installation

using COMPOSER

composer require dgvai/laravel-user-review

Configurations

Export the assets (migration and config)

php artisan vendor:publish --provider="DGvai\Review\ReviewerServiceProvider"

Run the migration

php artisan migrate

Clear configuration cache

php artisan config:cache

Usage

Add Reviewable trait to the model where you want users to give review and ratings. As example for Product Model

<?php 
namespace App;

use DGvai\Review\Reviewable;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use Reviewable;
    ...
    ...
}

?>

Creating review for a product:

Description

makeReview(object $user, int $rating [, string $review])

Returns

Object instance of the review

Example

    $product = Product::find($id);
    $user = auth()->user();

    //user makes new Review 
    $product->makeReview($user,3,'Very good product!');
    
    //user updates their Review on this product or makes a new review if doesn't have any.
    $product->makeOrUpdateReview($user,3,'Very good product!');

Review attributes

    // Get all active reviews of the product
    $product->reviews();

    // Get neumetic review count (average)
    $product->rating;

    // Get percentage review count (average)
    $product->rating_percent;

    /**
    *   NOTE: THIS PERCENTAGE IS BASED ON 5 STAR RATING, IF YOU WANT CUSTOM STAR, USE BELLOW
    *   This is configured via the config file comes with this package: user-review.php
    *   You can also set environment variable for your systems default star count
    *
    *   (.env)  SYSTEM_RATING_STAR_COUNT=5 
    */

    $product->averageRating(10);    //percentage for 10 starrted model

    // Get rating given to the product by a user:
    $product->userRating($user);

    /**
     *  Get Filtered Review
     *  Like, get only reviews that has been given 4 stars!
     * 
    */

    $product->filter(4);

    /**
     * Get it's percentage, which can be shown in the progress bar!
     * */ 
    $product->filteredPercentage(4);      // ex: output: 75 


    /**
     *  PULLING OUT REVIEWS
     *  There are several ways you can
     *  pull out reviews of products
    */

    // Get all reviews of all products
    $reviews = DGvai\Review\Review::all();              // all reviews
    $reviews = DGvai\Review\Review::active()->get();    // all active reviews
    $reviews = DGvai\Review\Review::inactive()->get();  // all inactive reviews
    $reviews = DGvai\Review\Review::daily()->get();     // all daily reviews
    $reviews = DGvai\Review\Review::monthly()->get();   // all monthly reviews
    $reviews = DGvai\Review\Review::yearly()->get();    // all yearly reviews

    // You can also chain these methods
    $reviews = DGvai\Review\Review::monthly()->active()->get();  // get aa monthly active reviews

    // Get reviews of a product
    $product->reviews();


    /**
     *  $reviews has some attributes
     *  Let's assume we are taking the first review
    */
    $review = $reviews->first();

    /**
     *  This the model object of the traited model
     *  In our case it is product
     * 
    */

    $review->model;     //  so $review->model->name with return the $product->name
    $review->user;      //  return User model that reviewed the model

    // Get review text
    $review->review_text;

    // Get review reply
    $review->reply;

    // reply a review by admin:
    $review->reply('Thanks for being with us!');

    // making active/inactive
    $review->makeActive();
    $review->makeInactive();

Till now that's it! Updates will bring new features soon InshaAllah.