zepson/laravel-comments

为您的 Laravel 应用程序添加评论

1.1.0 2020-12-30 14:16 UTC

This package is auto-updated.

Last update: 2024-09-17 21:15:59 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

添加将评论关联到您的 Laravel Eloquent 模型的功能。评论可以被批准并嵌套。阅读 zepson 网站上的文章 https://zepson.co.tz/index.php/2020/12/31/laravel-comments-package/

$post = Post::find(1);

$post->comment('This is a comment');

$post->commentAsUser($user, 'This is a comment from someone else');

安装

您可以通过 composer 安装此包

composer require zepson/laravel-comments

包将自动注册自己。

您可以使用以下命令发布迁移

php artisan vendor:publish --provider="zepson\Comments\CommentsServiceProvider" --tag="migrations"

在迁移发布后,您可以通过运行迁移来创建 media-table

php artisan migrate

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="zepson\Comments\CommentsServiceProvider" --tag="config"

用法

注册模型

为了让您的模型能够接收评论,请将 HasComments 特性添加到模型类中。

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use zepson\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 zepson\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

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 zepsoncompany@gmail.com 反馈,而不是使用问题跟踪器。

致谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件