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-comment
If you don't use auto-discovery, or using Laravel version < 5.5 Add service provider to your app.php file
\Actuallymab\LaravelComment\LaravelCommentServiceProvider::class
Publish configurations and migrations, then migrate comments table.
$ php artisan vendor:publish
$ php artisan migrate
Add 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 test
Please see CONTRIBUTING and CONDUCT for details.
If you discover any security related issues, please email mehmet.aydin.bahadir@gmail.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.