mll-lab / laravel-comment
Just another comment system for your awesome Laravel project.
Installs: 48 110
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 2
Forks: 63
Open Issues: 0
Requires
- php: ^7.1 || ^8
- illuminate/contracts: ~5.5.0 || ~5.6.0 || ~5.7.0 || ~5.8.0 || ^6 || ^7 || ^8 || ^9 || ^10 || ^11
- illuminate/support: ~5.5.0 || ~5.6.0 || ~5.7.0 || ~5.8.0 || ^6 || ^7 || ^8 || ^9 || ^10 || ^11
Requires (Dev)
- ergebnis/composer-normalize: ^2
- fakerphp/faker: ^1.8
- orchestra/testbench: ~3.5.0 || ~3.6.0 || ~3.7.0 || ~3.8.0 || ~3.9.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
- phpunit/phpunit: ^7.5 || ^8.4 || ^9 || ^10 || ^11
README
Just another comment system for your awesome Laravel project.
Install
Via Composer:
composer require mll-lab/laravel-comment
Publish configurations and migrations, then migrate the comments
table:
php artisan vendor:publish
php artisan migrate
Add the CanComment
trait to your User model:
use Actuallymab\LaravelComment\CanComment; final class User extends Model { use CanComment;
Add the Commentable
interface and the HasComments
trait to your commentable model(s):
use Actuallymab\LaravelComment\Contracts\Commentable; use Actuallymab\LaravelComment\HasComments; final class Product extends Model implements Commentable { use HasComments;
If you want to have your own Comment
Model create a new one and extend Actuallymab\LaravelComment\Models\Comment
:
use Actuallymab\LaravelComment\Models\Comment as LaravelComment; final class Comment extends LaravelComment
Don't forget to update the model class in
config/comment.php
.
Allow rating
final class Product extends Model implements Commentable { use HasComments; public function canBeRated(): bool { return true; // default false }
Require comments to be approved
final class Product extends Model implements Commentable { use HasComments; public function mustBeApproved(): bool { return true; // default false }
Allow some users to comment without approval
final class User extends Model { use CanComment; protected $fillable = [ 'isAdmin', ]; public function canCommentWithoutApprove(): bool { return $this->isAdmin; }
Usage
$user = User::firstOrFail(); $product = Product::firstOrFail(); // Pass the model to comment, the content and an optional rate $user->comment($product, 'Lorem ipsum ..', 3); // Only necessary if: // - User::canCommentWithoutApprove() returns false // - Product::mustBeApproved() returns true $product->comments[0]->approve(); // Calculates the average rating of approved comments $product->averageRate(); // Calculates the amount of approved comments $product->totalCommentsCount();
Tip: You might want to look at the tests/CommentTest.php file to check all potential usages.
Changelog
All notable changes to this project are documented in CHANGELOG.md
.
Contributing
See CONTRIBUTING and CONDUCT.
Security
If you discover any security related issues, email dev@mll.com instead of using the issue tracker.