Just another comment system for your awesome Laravel project.
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
.
final class Product extends Model implements Commentable
{
use HasComments;
public function canBeRated(): bool
{
return true; // default false
}
final class Product extends Model implements Commentable
{
use HasComments;
public function mustBeApproved(): bool
{
return true; // default false
}
final class User extends Model
{
use CanComment;
protected $fillable = [
'isAdmin',
];
public function canCommentWithoutApprove(): bool
{
return $this->isAdmin;
}
$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.
All notable changes to this project are documented in CHANGELOG.md
.
See CONTRIBUTING and CONDUCT.
If you discover any security related issues, email [email protected] instead of using the issue tracker.