mdhesari / laravel-comments
为您的 Laravel 应用程序添加评论功能
Requires
- php: ^7.2.5|^8.0|^8.1|^8.2
Requires (Dev)
- phpunit/phpunit: ^7.0|^8.0|9.2.*|^9.5.10|^10.0
This package is auto-updated.
Last update: 2024-09-17 18:45:23 UTC
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.');
评论方法返回新创建的评论类。
有时您可能还需要代表其他用户创建评论。您可以使用 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();
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 变更日志
贡献
有关详细信息,请参阅 贡献指南
安全
如果您发现任何安全相关的问题,请通过电子邮件 marcel@beyondco.de 联系我们,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件