hamedov/laravel-favorites

在 Laravel 应用中管理用户收藏。

4.0.0 2022-10-22 13:35 UTC

This package is auto-updated.

Last update: 2024-09-22 17:59:32 UTC


README

在 Laravel 应用中管理用户收藏。

安装

composer require hamedov/laravel-favorites

发布配置文件

php artisan vendor:publish --provider="Hamedov\Favorites\FavoritesServiceProvider" --tag="config"

在配置文件中设置用户模型

  • 确保在迁移之前执行此操作
    return [
        'user_model' => \App\User::class,
    ];
    

执行迁移

php artisan migrate

设置用户模型

  • Hamedov\Favorites\HasFavorites 特性添加到您的用户模型
    class User extends Model {
      use HasFavorites;
    }
    

使用

  • 将项目添加到用户收藏

    $book = Book::find(1);
    $user->addFavorite($book);
    
    $ad = Ad::find(1);
    $user->addFavorite($ad);
    
  • 从用户收藏中删除项目

    $book = Book::find(1);
    $user->removeFavorite($book);
    
  • 获取特定类型的用户收藏

    $favorites = $user->favorites('App\Book')->get();
    // Or
    $favorites = $user->favorites('App\Book')->paginate(10);
    
  • 获取特定类型的用户收藏 ID

    // This will return a collection of book ids
    // Passing null as a parameter will return all ids
    $favorites = $user->favoriteIds('App\Book');
    
  • 获取带有对应类型的用户收藏 ID,即,连接表条目

    $favorables = $user->favorables()->get();
    // Or pass type as parameter to get only specific type
    $favorables = $user->favorables('App\Ad')->get();
    
  • 删除所有用户收藏

    $user->flushFavorites();
    // Or
    $user->flushFavorites('App\Book');
    

可用作用域

  • hasFavorite 作用域:已将特定模型添加到收藏的用户

    $book = Book::find(1);
    $users = App\User::hasFavorite($book)->get();
    
  • hasFavoriteOfType 作用域:已将特定类型的任何模型添加到收藏的用户

    $users = App\User::hasFavoriteOfType('App\Book')->get();
    

许可证

在 Mit 许可证下发布,请参阅 LICENSE