Just another comment system for your awesome Laravel project.
| Laravel | Laravel Comment |
|---|---|
| 5.0.x | 0.1.x |
| 5.1.x | 0.1.x |
| 5.2.x | 0.1.x |
| 5.3.x | 0.2.x |
| 5.4.x | 0.3.x |
For >5.5 you can use ^1.0.0 version.
Via Composer
$ composer require actuallymab/laravel-commentIf you don't use auto-discovery, or using Laravel version < 5.5 Add service provider to your app.php file
\Actuallymab\LaravelComment\LaravelCommentServiceProvider::classPublish configurations and migrations, then migrate comments table.
$ php artisan vendor:publish
$ php artisan migrateAdd CanComment trait to your User model.
use Actuallymab\LaravelComment\CanComment;
class User extends Model
{
use CanComment;
// ...
}Add Commentable interface and HasComments trait to your commentable model(s).
use Actuallymab\LaravelComment\Contracts\Commentable;
use Actuallymab\LaravelComment\HasComments;
class Product extends Model implements Commentable
{
use HasComments;
// ...
}If you want to have your own Comment Model create a new one and extend my Comment model.
use Actuallymab\LaravelComment\Models\Comment as LaravelComment;
class Comment extends LaravelComment
{
// ...
}and dont forget to update the model name in the config/comment.php file.
Comment package comes with several modes.
1- If you want to users can rate your commentable models;
class Product extends Model implements Commentable
{
use HasComments;
public function canBeRated(): bool
{
return true; // default false
}
//...
}2- If you want to approve comments for your commentable models;
class Product extends Model implements Commentable
{
use HasComments;
public function mustBeApproved(): bool
{
return true; // default false
}
// ...
}3- Sometimes you don't want to approve comments for all users;
class User extends Model
{
use CanComment;
protected $fillable = [
'isAdmin',
// ..
];
public function canCommentWithoutApprove(): bool
{
return $this->isAdmin;
}
// ..
}$user = App\User::first();
$product = App\Product::first();
// $user->comment(Commentable $model, $comment = '', $rate = 0);
$user->comment($product, 'Lorem ipsum ..', 3);
// approve it -- if the user model `canCommentWithoutApprove()` or you don't use `mustBeApproved()`, it is not necessary
$product->comments[0]->approve();
// get avg rating -- it calculates approved average rate.
$product->averageRate();
// get total comments count -- it calculates approved comments count.
$product->totalCommentsCount();Tip: You might want to look at the tests/CommentTest.php file to check all potential usages.
Please see CHANGELOG for more information what has changed recently.
$ composer testPlease see CONTRIBUTING and CONDUCT for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.

