christiankuri/laravel-favorite
Composer 安装命令:
composer require christiankuri/laravel-favorite
包简介
Allows Laravel Eloquent models to implement a 'favorite' or 'remember' or 'follow' feature.
关键字:
README 文档
README
Allows Laravel Eloquent models to implement a 'favorite' or 'remember' or 'follow' feature.
Index
Installation
- Install the package via Composer
$ composer require christiankuri/laravel-favorite
- In Laravel >=5.5 this package will automatically get registered. For older versions, update your
config/app.phpby adding an entry for the service provider.
'providers' => [ // ... ChristianKuri\LaravelFavorite\FavoriteServiceProvider::class, ];
- Publish the database from the command line:
php artisan vendor:publish --provider="ChristianKuri\LaravelFavorite\FavoriteServiceProvider"
- Migrate the database from the command line:
php artisan migrate
Models
Your User model should import the Traits/Favoriteability.php trait and use it, that trait allows the user to favorite the models.
(see an example below):
use ChristianKuri\LaravelFavorite\Traits\Favoriteability; class User extends Authenticatable { use Favoriteability; }
Your models should import the Traits/Favoriteable.php trait and use it, that trait have the methods that you'll use to allow the model be favoriteable.
In all the examples I will use the Post model as the model that is 'Favoriteable', thats for example propuses only.
(see an example below):
use ChristianKuri\LaravelFavorite\Traits\Favoriteable; class Post extends Model { use Favoriteable; }
That's it ... your model is now "favoriteable"! Now the User can favorite models that have the favoriteable trait.
Usage
The models can be favorited with and without an authenticated user (see examples below):
Add to favorites and remove from favorites:
If no param is passed in the favorite method, then the model will asume the auth user.
$post = Post::find(1); $post->addFavorite(); // auth user added to favorites this post $post->removeFavorite(); // auth user removed from favorites this post $post->toggleFavorite(); // auth user toggles the favorite status from this post
If a param is passed in the favorite method, then the model will asume the user with that id.
$post = Post::find(1); $post->addFavorite(5); // user with that id added to favorites this post $post->removeFavorite(5); // user with that id removed from favorites this post $post->toggleFavorite(5); // user with that id toggles the favorite status from this post
The user model can also add to favorites and remove from favrites:
$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
Return the favorite objects for the user:
A user can return the objects he marked as favorite.
You just need to pass the class in the favorite() method in the User model.
$user = Auth::user(); $user->favorite(Post::class); // returns a collection with the Posts the User marked as favorite
Return the favorites count from an object:
You can return the favorites count from an object, you just need to return the favoritesCount attribute from the model
$post = Post::find(1); $post->favoritesCount; // returns the number of users that have marked as favorite this object.
Return the users who marked this object as favorite
You can return the users who marked this object, you just need to call the favoritedBy() method in the object
$post = Post::find(1); $post->favoritedBy(); // returns a collection with the Users that marked the post as favorite.
Check if the user already favorited an object
You can check if the Auth user have already favorited an object, you just need to call the isFavorited() method in the object
$post = Post::find(1); $post->isFavorited(); // returns a boolean with true or false.
Testing
The package have integrated testing, so everytime you make a pull request your code will be tested.
Change log
Please see CHANGELOG for more information on what has changed recently.
Contributions
Contributions are welcome and will be fully credited. We accept contributions via Pull Requests on Github.
Pull Requests
-
PSR-2 Coding Standard - Check the code style with
$ composer check-styleand fix it with$ composer fix-style. -
Add tests! - Your patch won't be accepted if it doesn't have tests.
-
Document any change in behaviour - Make sure the
README.mdand any other relevant documentation are kept up-to-date. -
Consider our release cycle - We try to follow SemVer v2.0.0. Randomly breaking public APIs is not an option.
-
Create feature branches - Don't ask us to pull from your master branch.
-
One pull request per feature - If you want to do more than one thing, send multiple pull requests.
-
Send coherent history - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please squash them before submitting.
Security
Please report any issue you find in the issues page. Pull requests are welcome.
Credits
License
The MIT License (MIT). Please see License File for more information.
christiankuri/laravel-favorite 适用场景与选型建议
christiankuri/laravel-favorite 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 484.96k 次下载、GitHub Stars 达 226, 最近一次更新时间为 2016 年 12 月 21 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「package」 「laravel」 「remember」 「Follow」 「favorite」 「favourite」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 christiankuri/laravel-favorite 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 christiankuri/laravel-favorite 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 christiankuri/laravel-favorite 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
CakePHP plugin that performs Remember-me authentication with the new cookie algorithm of version 3.5 or later
Query caching for Laravel 5
Add Likeable trait to Laravel Eloquent models
Simple ASCII output of array data
Persistent Remember Me bundle for Symfony applications
统计信息
- 总下载量: 484.96k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 227
- 点击次数: 42
- 依赖项目数: 5
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2016-12-21