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 LaravelCommentDon'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.