manzadey / laravel-favorite
允许 Laravel Eloquent 模型实现 '收藏' 或 '记住' 或 '关注' 功能。
Requires
- php: ^8.0|^8.1
- illuminate/database: ^8.0|^9.0
- illuminate/support: ^8.0|^9.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.5.10
This package is auto-updated.
Last update: 2024-09-24 07:32:23 UTC
README
允许 Laravel Eloquent 模型实现 '收藏' 或 '记住' 或 '关注' 功能。
索引
安装
- 通过 Composer 安装包
$ composer require manzadey/laravel-favorite
- 您需要发布迁移来创建
favorites
表
php artisan vendor:publish --provider="Manzadey\LaravelFavorite\FavoriteServiceProvider" --tag="migrations"
- 之后,您需要运行迁移
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()
方法来检查认证用户是否已经收藏了对象
$post = Post::find(1); $post->isFavorite(); // returns a boolean with true or false.
测试
该包已集成测试,所以每次您提交拉取请求时,您的代码都会被测试。
变更日志
请参阅变更日志获取有关最近更改的更多信息。
贡献
贡献是 欢迎的,并将得到全部 认可。我们通过 Github 上的拉取请求接受贡献。
拉取请求
-
PSR-12 编码标准 - 使用
$ composer check-style
检查代码风格,并使用$ composer fix-style
修复它。 -
添加测试! - 如果您的补丁没有测试,则不会被接受。
-
记录任何行为变更 - 确保保持
README.md
和任何其他相关文档的最新状态。 -
考虑我们的发布周期 - 我们尽量遵循 SemVer v2.0.0。随机破坏公共 API 不是可选项。
-
创建功能分支 - 不要要求我们从您的 master 分支中拉取。
-
每个功能一个拉取请求 - 如果您想做更多的事情,请发送多个拉取请求。
-
发送一致的提交历史 - 确保您在 pull request 中的每个单独提交都是有意义的。如果您在开发过程中不得不创建多个中间提交,请在提交前请合并它们。
安全性
请在问题页面上报告您发现的所有问题。欢迎提交 pull request。
致谢
许可证
MIT 许可证(MIT)。更多信息请参阅许可证文件。