beyondcode / laravel-comments
为您的Laravel应用程序添加评论功能
Requires
- php: ^7.2.5|^8.0
- illuminate/support: ~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^3.6|^5.0|^6.0|^7.0|^8.0
- phpunit/phpunit: ^7.0|^8.0|9.2.*|^9.5.10
README
为您的Laravel Eloquent模型添加关联评论功能。评论可以审核和嵌套。
$post = Post::find(1); $post->comment('This is a comment'); $post->commentAsUser($user, 'This is a comment from someone else');
安装
您可以通过composer安装此包
composer require beyondcode/laravel-comments
包将自动注册自己。
您可以使用以下命令发布迁移
php artisan vendor:publish --provider="BeyondCode\Comments\CommentsServiceProvider" --tag="migrations"
迁移发布后,您可以通过运行迁移来创建media-table
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="BeyondCode\Comments\CommentsServiceProvider" --tag="config"
用法
注册模型
为了让您的模型能够接收评论,请将HasComments
特质添加到模型类中。
namespace App\Models; use Illuminate\Database\Eloquent\Model; use BeyondCode\Comments\Traits\HasComments; class Post extends Model { use HasComments; ... }
创建评论
要为可评论的模型创建评论,您可以使用comment
方法。它接收您想要存储的评论字符串。
$post = Post::find(1); $comment = $post->comment('This is a comment from a user.');
comment
方法返回新创建的评论类。
有时您可能还想代表其他用户创建评论。您可以使用commentAsUser
方法并传入应该与该评论关联的用户模型来实现这一点
$post = Post::find(1); $comment = $post->commentAsUser($yourUser, 'This is a comment from someone else.');
审核评论
默认情况下,您创建的所有评论都没有审核 - 这只是一个名为is_approved
的布尔标志,您可以在视图/控制器中使用它来过滤掉您可能不想显示的评论。
要审核单个评论,您可以在Comment模型上使用approve
方法,如下所示
$post = Post::find(1); $comment = $post->comments->first(); $comment->approve();
自动审核评论
如果您想自动为特定用户(可选的模型)的评论审核,可以让您的User模型实现以下接口和方法
namespace App\Models; use BeyondCode\Comments\Contracts\Commentator; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements Commentator { /** * Check if a comment for a specific model needs to be approved. * @param mixed $model * @return bool */ public function needsCommentApproval($model): bool { return false; } }
needsCommentApproval
方法接收您想要添加评论的模型实例,您可以返回true
将评论标记为未审核,或返回false
将评论标记为已审核。
检索评论
使用HasComments
特质的模型可以通过comments
关系访问其评论
$post = Post::find(1); // Retrieve all comments $comments = $post->comments; // Retrieve only approved comments $approved = $post->comments()->approved()->get();
嵌套评论
BeyondCode\Comments\Comment
本身实现了HasComments
特质,因此您可以在评论上添加评论,从而嵌套它们
$comment = BeyondCode\Comments\Comment::first(); $comment->commentAsUser($user, "Hey there!");
测试
composer test
更新日志
有关最近更改的更多信息,请参阅更新日志
贡献
有关详细信息,请参阅贡献
安全
如果您发现任何与安全相关的问题,请通过电子邮件marcel@beyondco.de联系,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。