A full and simple Toolkit Package for instantly adding Social Features to Laravel Project Adapted From Miladimos
-
Run the command below to add this package:
composer require zaghadon/laravel-social
-
Open your config/socials.php and add the following to the providers array:
Zaghadon\Social\Providers\SocialServiceProvider::class,
-
Run the command below to install package:
php artisan social:install
-
Run the command below to migrate database:
php artisan migrate
Depending on the Capabilities You want implemented, as the required traits to the right Models.
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Zaghadon\Social\Traits\Like\Likeable;
class Post extends Model
{
use HasFactory,
Likeable;
}
In the User Model:
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zaghadon\Social\Traits\Like\CanLike;
class User extends Authenticatable
{
use HasFactory,
CanLike;
}
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Zaghadon\Social\Traits\Comment\Commentable;
class Post extends Model
{
use HasFactory,
Commentable;
}
In the User Model:
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zaghadon\Social\Traits\Comment\Commentor;
class User extends Authenticatable
{
use HasFactory,
Commentor;
}
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Zaghadon\Social\Traits\Bookmark\Bookmarkable;
class Post extends Model
{
use HasFactory,
Bookmarkable;
}
In the User Model:
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zaghadon\Social\Traits\Bookmark\CanBookmark;
class User extends Authenticatable
{
use HasFactory,
CanBookmark;
}
In the User Model:
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zaghadon\Social\Traits\Follow\Followable;
class User extends Authenticatable
{
use HasFactory,
Followable;
}
In controllers you have these methods:
namespace App\Http\Controllers;
use App\Models\Post;
class PostController extends Controller
{
public function index()
{
$post = Post::find(1);
$post->likes // return all likes
}
}
- Document Every Available Methods and their Usage.
- Create a test framework to test each unit feature.
Like
Favorite *
Tag **
Category **
Bookmark
Follow \ Unfollow
Subscribe **
Comment
Vote / Rate System *