multicaret/laravel-acquaintances
| Install | |
|---|---|
composer require multicaret/laravel-acquaintances |
|
| Latest Version: | v4.0.0-beta.1 |
| PHP: | ^8.2 |
| License: | MIT |
| Last Updated: | Apr 9, 2026 |
| Links: | GitHub · Packagist |
Laravel Acquaintances
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
Related Packages
This package gives Eloquent models the ability to manage friendships (with group...
This package gives Eloquent models the ability to manage their friendships.
This package gives Eloquent models the ability to manage their friendships. Fork...