manzadey/laravel-favorite

允许 Laravel Eloquent 模型实现 '收藏' 或 '记住' 或 '关注' 功能。

v3.1 2022-05-24 02:06 UTC

This package is auto-updated.

Last update: 2024-09-24 07:32:23 UTC


README

Latest Version on Packagist Packagist Downloads Software License

允许 Laravel Eloquent 模型实现 '收藏' 或 '记住' 或 '关注' 功能。

索引

安装

  1. 通过 Composer 安装此包
$ composer require manzadey/laravel-favorite
  1. 您需要发布迁移来创建 favorites
php artisan vendor:publish --provider="Manzadey\LaravelFavorite\FavoriteServiceProvider" --tag="migrations"
  1. 之后,您需要运行迁移
php artisan migrate

发布配置文件

发布配置文件是可选的

php artisan vendor:publish --provider="Manzadey\LaravelFavorite\FavoriteServiceProvider" --tag="config"

这是配置文件的默认内容

declare(strict_types=1);

return [
    
    /*
     * The fully qualified class name of the favorite model.
     */
    'model' => \Manzadey\LaravelFavorite\Models\Favorite::class,
    
];

模型

您的用户模型应该导入 Favoriteability 特性,FavoriteabilityContract 实现接口并使用它,该特性允许用户收藏模型。(见以下示例)

use Manzadey\LaravelFavorite\Traits\Favoriteability;
use Manzadey\LaravelFavorite\Contracts\FavoriteabilityContract;

class User extends Authenticatable implements FavoriteabilityContract;
{
	use Favoriteability;
}

您的模型应该导入 Favoriteable 特性,FavoriteableContract 实现接口并使用它,该特性包含您将用来允许模型可收藏的方法。在所有示例中,我将使用 Post 模型作为 '可收藏' 的模型,这只是一个示例。 (见以下示例)

use Manzadey\LaravelFavorite\Traits\Favoriteable;
use Manzadey\LaravelFavorite\Contracts\FavoriteableContract;

class Post extends Model implements FavoriteableContract
{
    use Favoriteable;
}

就是这样...您的模型现在是 "可收藏的"! 现在,用户可以收藏具有可收藏特性的模型。

用法

模型可以带或不带认证用户进行收藏(见以下示例)

添加到收藏夹和从收藏夹中删除

如果在收藏方法中传递了参数,则模型将假设具有该用户模型的用户。

$user = User::first();
$post = Post::find(1);
$post->addFavorite($user); // user with that id added to favorites this post
$post->removeFavorite($user); // user with that id removed from favorites this post
$post->toggleFavorite($user); // user with that id toggles the favorite status from this post

用户模型也可以添加到收藏夹和从收藏夹中删除

$user = User::first();
$post = Post::first();
$user->addFavorite($post); // The user added to favorites this post
$user->removeFavorite($post); // The user removed from favorites this post
$user->toggleFavorite($post); // The user toggles the favorite status from this post

返回用户的收藏对象

用户可以返回他标记为收藏的对象。您只需要在 User 模型中的 getFavorite() 方法中传递

$user = Auth::user();
$user->getFavorite(Post::class, Article::class); // returns a collection with the Posts the User marked as favorite

返回标记此对象为收藏的用户

您可以通过在对象中调用 favoriteBy() 方法来返回标记此对象的用户

$post = Post::find(1);
$post->favoriteBy(); // returns a collection with the Users that marked the post as favorite.

检查用户是否已经收藏了对象

您可以通过在对象中调用 isFavorite() 方法来检查 Auth 用户是否已经收藏了对象

$post = Post::find(1);
$post->isFavorite(); // returns a boolean with true or false.

测试

该包已集成测试,因此每次您提交拉取请求时,您的代码都将被测试。

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

贡献是 欢迎 的,并将得到全面 认可。我们通过 Github 上的拉取请求接受贡献。

拉取请求

  • PSR-12 编码标准 - 使用 $ composer check-style 检查代码样式,并使用 $ composer fix-style 修复它。

  • 添加测试! - 如果您的补丁没有测试,则不会被接受。

  • 记录任何行为变更 - 确保将 README.md 和任何其他相关文档保持最新。

  • 考虑我们的发布周期 - 我们尝试遵循 SemVer v2.0.0。随机破坏公共 API 不是可选项。

  • 创建功能分支 - 不要让我们从您的master分支拉取。

  • 每个功能一个拉取请求 - 如果您想做多项工作,请发送多个拉取请求。

  • 发送连贯的历史记录 - 确保您拉取请求中的每个单独的提交都是有意义的。如果在开发过程中必须进行多个中间提交,请在提交前请压缩它们

安全

请将您在问题页面上发现的任何问题报告。欢迎提交拉取请求。

致谢

许可证

MIT许可(MIT)。请参阅许可文件以获取更多信息。