Manage user favorites in laravel application.
composer require hamedov/laravel-favorites
php artisan vendor:publish --provider="Hamedov\Favorites\FavoritesServiceProvider" --tag="config"
- Make sure you do this before migrations
return [ 'user_model' => \App\User::class, ];
php artisan migrate
- Add
Hamedov\Favorites\HasFavorites
trait to your user modelclass User extends Model { use HasFavorites; }
-
Add item to user favorites
$book = Book::find(1); $user->addFavorite($book); $ad = Ad::find(1); $user->addFavorite($ad);
-
Remove item from user favorites
$book = Book::find(1); $user->removeFavorite($book);
-
Get user favorites of specific type
$favorites = $user->favorites('App\Book')->get(); // Or $favorites = $user->favorites('App\Book')->paginate(10);
-
Get user favorite ids of specific type
// This will return a collection of book ids // Passing null as a parameter will return all ids $favorites = $user->favoriteIds('App\Book');
-
Get use favorite ids with corresponding types, i.e, pivot table entries
$favorables = $user->favorables()->get(); // Or pass type as parameter to get only specific type $favorables = $user->favorables('App\Ad')->get();
-
Remove all user favorites
$user->flushFavorites(); // Or $user->flushFavorites('App\Book');
-
hasFavorite
Scope users who added specific model to favorites$book = Book::find(1); $users = App\User::hasFavorite($book)->get();
-
hasFavoriteOfType
Scope users who add any model of specific type to favorites$users = App\User::hasFavoriteOfType('App\Book')->get();
Released under the Mit license, see LICENSE