alpetg / wishlist
使模型可添加至愿望清单
dev-master
2022-09-24 14:43 UTC
Requires
- php: ^8.0
- illuminate/contracts: ^9.0
- spatie/laravel-package-tools: ^1.13.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-24 19:20:31 UTC
README
使 Eloquent 模型可添加至愿望清单
安装
您可以通过 composer 安装此包
composer require alpetg/wishlist
迁移
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --tag="wishlist-migrations"
php artisan migrate
配置
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="wishlist-config"
使用方法
准备模型
在用户模型上添加 Wishlist
use AlpetG\Wishlist\Traits\Wishlist; class User extends Authenticatable { use Wishlist; <...> }
在您希望添加愿望清单的每个模型上添加 Wishlistable
use AlpetG\Wishlist\Traits\Wishlistable; class Products extends Model { use Wishlistable; <...> }
API
$user = User::find(1); $product = Product::find(3); $user->wish($product); $user->unwish($product); $user->toggleWishlist($product); //Or Dircet from product $product->wish() $product->unwish() $product->toggleWishlist()
聚合
// All $user->->wishlist()->count(); //or $user->wishlistCount(); // with type $user->wishlist()->withType(Product::class)->count();
带有 *_count
属性的列表
$user = User::withCount('wishlist')->get();
foreach ($user_count as $user) {
echo $user->wishlist_count;
}
将愿望清单状态附加到可愿望清单集合
您可以使用 Wishlist::attachWishlistStatus(Collection $wishlists)
来附加用户愿望清单状态,这将设置 is_wishlisted
属性为 $wishlists
中的每个模型
对于模型
$user1 = User::find(1); $user->attachWishlistStatus($user1); // result [ "id" => 1 "name" => "user1" "created_at" => "2022-09-24T23:06:47.000000Z" "updated_at" => "2022-09-24T23:06:47.000000Z" "is_wishlisted" => true ]
对于 Collection | Paginator | LengthAwarePaginator | array
$user = auth()->user(); $products = Product::oldest('id')->get(); $products = $user->attachWishlistStatus($products); $products = $products->toArray(); // result [ [ "id" => 1 "title" => "product 1" "created_at" => "2022-09-24T23:06:47.000000Z" "updated_at" => "2022-09-24T23:06:47.000000Z" "is_wishlisted" => true ], [ "id" => 2 "title" => "product 2" "created_at" => "2022-09-24T23:06:47.000000Z" "updated_at" => "2022-09-24T23:06:47.000000Z" "is_wishlisted" => true ], [ "id" => 3 "title" => "product 3" "created_at" => "2022-09-24T23:06:47.000000Z" "updated_at" => "2022-09-24T23:06:47.000000Z" "is_wishlisted" => false ], ]
对于分页
$products = Product::paginate(10); $user->attachWishlistStatus($products);
简单易用
$products = Product::paginate(10); $user->getMyWish($products);
测试
composer test
变更日志
请参阅 CHANGELOG 以获取有关最近更改的更多信息。
鸣谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。