trendsoft/laravel-bookmark
Composer 安装命令:
composer require trendsoft/laravel-bookmark
包简介
Laravel bookmark
关键字:
README 文档
README
User bookmark feature for Laravel Application.
Installing
$ composer require trendsoft/laravel-bookmark -vvv
Configuration
This step is optional
$ composer artisan vendor:publish --provider="Trendsoft\\LaravelBookmark\\BookmarkServiceProvider" --tag=config
Migrations
This step is also optional, if you want to custom bookmarks table, you can publish the migration files:
$ composer artisan vendor:publish --provider="Trendsoft\\LaravelBookmark\\BookmarkServiceProvider" --tag=migrations
Usage
Traits
Trendsoft\LaravelBookmark\Traits\Bookmarker
use Illuminate\Database\Eloquent\Model; use Trendsoft\LaravelBookmark\Traits\Bookmarker; class User extends Model { use Bookmarker; }
Trendsoft\LaravelBookmark\Traits\Bookmarkable
use Illuminate\Database\Eloquent\Model; use Trendsoft\LaravelBookmark\Traits\Bookmarkable; class Post extends Model { use Bookmarkable; }
API
$user = User::find(1); $post = Post::find(1); $user->bookmark($post); $user->unBookmark($post); $user->toggleBookmark($post); $user->hasBookmarked($post); $post->isBookmarkedBy($user);
Get user bookmarks with pagination:
$bookmarks = $user->bookmarks()->with('bookmarkable')->paginate(20); foreach($bookmarks as $bookmark){ $bookmark->bookmarkable; // App\Post instance }
Get object bookmarkers:
foreach($post->bookmarkers as $user){ echo $user->name; }
with pagination:
$bookmarkers = $post->bookmarkers()->paginate(20); foreach($bookmarkers as $user){ echo $user->name; }
Aggregations
//all $user->bookmarks()->count(); //with type $user->bookmarks()->withType(Post::class)->count(); // bookmarkers count $post->bookmarkers()->count();
List with *_count attribute:
$users = User::withCount('bookmarks')->get(); foreach($users as $user){ echo $user->bookmarks_count; }
N +1 issue
To avoid the N+1 issue, you can use eager loading to reduce this operation to just 2 queries. When querying, you may specify which relationships should be eager loaded using the with method:
// Bookmarker $users = App\User::with('bookmarks')->get(); foreach($users as $user) { $user->hasBookmarked($post); } // Bookmarkable $posts = App\Post::with('bookmarks')->get(); // or $posts = App\Post::with('bookmarkers')->get(); foreach($posts as $post){ $post->isBookmarkedBy($user); }
Events
| Event | Description |
|---|---|
Trendsoft\LaravelBookmark\Events\Bookmarked |
Triggered when the relationship is created. |
Trendsoft\LaravelBookmark\Events\Unbookmarked |
Triggered when the relationship is deleted. |
Contributing
You can contribute in one of three ways:
- File bug reports using the issue tracker.
- Answer questions or fix bugs on the issue tracker.
- Contribute new features or update the wiki.
The code contribution process is not very formal. You just need to make sure that you follow the PSR-0, PSR-1, and PSR-2 coding guidelines. Any new code contributions must be accompanied by unit tests where applicable.
License
MIT
trendsoft/laravel-bookmark 适用场景与选型建议
trendsoft/laravel-bookmark 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 131 次下载、GitHub Stars 达 9, 最近一次更新时间为 2020 年 08 月 01 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「bookmark」 「trendsoft」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 trendsoft/laravel-bookmark 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 trendsoft/laravel-bookmark 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 trendsoft/laravel-bookmark 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
金额转中文大写
Follow, Favourite, Bookmark, Like & Subscribe.
delia is a bookmark manager for your filament resources
基于`trendsoft/capital`的Laravel金额转中文大写
Bookmark management bundle
Bookmarks storage module
统计信息
- 总下载量: 131
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 9
- 点击次数: 8
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-08-01