alpetg/wishlist

使模型可添加至愿望清单

dev-master 2022-09-24 14:43 UTC

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)。有关更多信息,请参阅 许可文件