multicaret / laravel-acquaintances
This light package, with no dependencies, gives Eloquent models the ability to manage friendships (with groups), verifications, and interactions such as: Likes, favorites, votes, subscribe, follow, ..etc. And it includes advanced rating system.
Package info
github.com/multicaret/laravel-acquaintances
pkg:composer/multicaret/laravel-acquaintances
Requires
- php: ^8.2
- illuminate/database: ^12.0 || ^13.0
- illuminate/events: ^12.0 || ^13.0
- illuminate/filesystem: ^12.0 || ^13.0
- illuminate/support: ^12.0 || ^13.0
Requires (Dev)
- doctrine/dbal: ^4.0
- fakerphp/faker: ^1.23
- mockery/mockery: ^1.6
- orchestra/testbench: ^10.0 || ^11.0
- phpunit/phpunit: ^11.0 || ^12.0 || ^13.0
- dev-master
- v4.0.0-beta.2
- v4.0.0-beta.1
- v3.7.3
- v3.7.2
- v3.7.1
- v3.7.0
- v3.6.2
- v3.6.1
- v3.6.0
- v3.5.9
- v3.5.8
- v3.5.7
- v3.5.6
- v3.5.5
- v3.5.4
- v3.5.3
- v3.5.2
- v3.5.1
- v3.5.0
- v3.4.7
- v3.4.6
- v3.4.5
- v3.4.4
- v3.4.3
- v3.4.2
- v3.4.1
- v3.4.0
- v3.3.1
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.0
- v2.0.0
- v1.x-dev
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2026-04-09 15:41:28 UTC
README
Clean, modular social features for Eloquent models: Friendships, Verifications, Interactions (Follow/Like/Favorite/Report/Subscribe/Vote/View), and multi-type Ratings.
- PHP >= 8.1
- Illuminate components ^9.0 | ^10.0 | ^11.0 | ^12.0 | ^13.0 (Laravel 9–13)
- Laravel News: https://laravel-news.com/manage-friendships-likes-and-more-with-the-acquaintances-laravel-package
What's New in v4
- UUID / ULID morph support — configurable per table via
morphs,uuidMorphs, orulidMorphs. - Caching layer — in-memory request cache + optional persistent cache for interaction checks with automatic invalidation.
withAcquaintanceCounts()macro — eager-load interaction counts in a single query.HasAcquaintanceCounterstrait — auto-increment/decrement counter columns on your model's table.AcquaintancesCleanupJob— queued mass deletion of acquaintance data for deleted models.- Database indexes — composite and unique indexes on all tables for faster lookups.
- Morph map registration — automatic morph map for all package models.
- Strict return types on all traits and models.
- DB transactions for
blockFriend()andblockVerification(). - Interactions-only mode — disable friendships and/or verifications via
featuresconfig to skip their migrations entirely. Granular per-feature publish tags available.
See CHANGELOG.md for the full list and Upgrade Notes for migration steps.
TL;DR
$user1 = User::find(1); $user2 = User::find(2); // Friendships $user1->befriend($user2); $user2->acceptFriendRequest($user1); // The messy breakup :( $user2->unfriend($user1); // Verifications (message is optional) $user1->verify($user2, "Worked together on several Laravel projects."); $user2->acceptVerificationRequest($user1); if ($user1->isVerifiedWith($user2)) { echo "Verified!"; }
Documentation
To keep this README concise, the full documentation lives under docs/:
- Overview
- Installation
- Configuration
- Friendships
- Verifications
- Interactions (Follow/Like/Favorite/Report/Subscribe/Vote/View)
- Ratings
- Migrations
- Events
- Testing
- FAQ
- Upgrade Notes
Quickstart
- Install
composer require multicaret/laravel-acquaintances
- Publish (optional) and migrate
php artisan vendor:publish --provider="Multicaret\\Acquaintances\\AcquaintancesServiceProvider"
php artisan migrate
Interactions-Only Mode
If you only need interactions (Follow, Like, Favorite, Subscribe, Vote, View, Report, Rate) and don't need Friendships or Verifications, disable them in config/acquaintances.php:
'features' => [ 'interactions' => true, 'friendships' => false, 'verifications' => false, ],
This prevents friendship and verification migrations from being loaded or published, keeping your database lean.
You can also publish migrations for specific features using granular tags:
# Only interaction migrations php artisan vendor:publish --tag=acquaintances-migrations-interactions # Only friendship migrations php artisan vendor:publish --tag=acquaintances-migrations-friendships # Only verification migrations php artisan vendor:publish --tag=acquaintances-migrations-verifications
Custom User Model Location
If your User model lives in a non-standard namespace (e.g., App\Models\Core\User), set user_model_class_name in config/acquaintances.php:
'user_model_class_name' => \App\Models\Core\User::class,
When null (default), the package resolves the user model from model_namespace + models.user (i.e., App\Models\User).
- Add traits to your models
use Multicaret\\Acquaintances\\Traits\\Friendable; use Multicaret\\Acquaintances\\Traits\\Verifiable; use Multicaret\\Acquaintances\\Traits\\CanFollow; use Multicaret\\Acquaintances\\Traits\\CanBeFollowed; use Multicaret\\Acquaintances\\Traits\\CanLike; use Multicaret\\Acquaintances\\Traits\\CanBeLiked; use Multicaret\\Acquaintances\\Traits\\CanRate; use Multicaret\\Acquaintances\\Traits\\CanBeRated; class User extends Model { use Friendable, Verifiable; use CanFollow, CanBeFollowed; use CanLike, CanBeLiked; use CanRate, CanBeRated; }
Explore the feature guides linked above for full APIs and examples.
Compatibility
| Version | PHP | Laravel |
|---|---|---|
| v4 | >= 8.1 | 9, 10, 11, 12, 13 |
| v3.x | >= 8.0 | 9, 10, 11, 12 |
Contributing / Changelog
- Contributing: see CONTRIBUTING.md
- Changes: see CHANGELOG.md