PHPackages                             dzyfhuba/laravel-post-system - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. dzyfhuba/laravel-post-system

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

dzyfhuba/laravel-post-system
============================

Post, Comment, Like and Reply.

128PHP

Since Feb 10Pushed 4y ago1 watchersCompare

[ Source](https://github.com/Dzyfhuba/laravel-post-system)[ Packagist](https://packagist.org/packages/dzyfhuba/laravel-post-system)[ RSS](/packages/dzyfhuba-laravel-post-system/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Post System Laravel
===================

[](#post-system-laravel)

> Features:
>
> - Post
> - Comment
> - Reply
> - Like

- [Installation](#installation)
- [Usage](#usage)
- [Blade](#blade)
- [Advance Eloquent Model](#advance-eloquent-model)
- [Example](#example)

> ⚠️ Laravel 6+

Installation
------------

[](#installation)

Use the composer require or add to composer.json.

```
composer require dzyfhuba/laravel-post-system
```

If you are using SQL database server to store log events you would need to run the migrations first. The MongoDB driver does not require the migration.

```
php artisan migrate
```

Usage
-----

[](#usage)

Since this is a custom package, and your Model should have User and database users table.

### Basic Usage

[](#basic-usage)

First, add the ***use Dzyfhuba\\PostSys\\Traits\\HasPost*** trait to your User model:

```
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Dzyfhuba\PostSys\Traits\HasPost;

class User extends Authenticatable
{
    use HasPost;

    // ...
}
```

### User

[](#user)

```
// Fetch the User
$user = User::find(1);

// get User Posts
$posts =  $user->posts;
// get latest Posts
$latestPosts =  $user->latest_posts;

// get Active Posts
$activePosts =  $user->active_posts;

// get Active Posts
$inactivePosts =  $user->inactive_posts;

// Post Count
$postsCount =  $user->posts_count;
// Active Post Count
$activePostsCount =  $user->active_posts_count;
// Inactive Post Count
$inactivePostsCount =  $user->inactive_posts_count;

/**
 * Assgin or remove Post
 * Create or fetch the Post
**/

use Dzyfhuba\PostSys\Models\Post;
//Get the single Post or Post::find(1);
$post = Post::create([
        'title'=> 'My First Post',
        'description'=> 'This package will create posts, comments, likes, diskies and replies',
        'status'=> 1, // default active(1) for inactive(0)
    ]);

//Assign single Post
$user->assignPost($post);
//Assign multiple Post
$user->assignPost([$post, $post2]);

//Remove single Post
$user->removePost($post);
//Remove multiple Post
$user->removePost([$post, $post2]);

//Synchronize single Post
$user->syncPosts($post);
//Synchronize multiple Post
$user->syncPosts([$post, $post2]);
```

### Posts

[](#posts)

```
use Dzyfhuba\PostSys\Models\Post;
/**
 * Get all Posts
 * @return Array|Posts|Comments|Replies
 * Response all Posts with their comments and replies on each comment
**/
$posts = Post::all();

/**
 * Fetch a single Post
 * @return Object|Posts, Array|Comments|Replies
 * Response Post with all comments and replies on each comment
**/
$post = Post::find(1);

// Create new Post
$post = Post::create([
        'title'=> 'My First Post',
        'description'=> 'This package will create posts, comments, likes, diskies and replies',
        'status'=> 1, // default active(1) for inactive(0)
    ]);

// Update Post
$post->update(['title'=>'new text1']); // Boolean

/**
 * Delete Post
 * @return Boolean
 * This will delete the Post as well as all comments & replies of that Post
**/
$post->delete();

//Assign a Post to user
$post->user()->associate($user)->save();

//Remove a Post
$post->user()->dissociate()->save();

// First and Last Post for the User
$post = $user->posts->first();
$post = $user->posts->last();
```

### Comments

[](#comments)

```
/**
 * Get all Comments for the Post
 * @return Array|Comments|Replies
 * Response all comments and replies for the Post
**/

$comments = $post->comments;

/**
 * Add Comment to Post
 * 	@return Object|Comment with replies[]
**/
$comment = $post->addComment("My First Comment", $user);

/**
 * Add Comment to Post
 * @return Array|Comments|replies
 * Response all comments added to the post
**/
$comments = $post->addAllComments("This is awesome package", $user);

/**
 * Edit Comment to Post
 * @return Object|Comment with Array|replies
 * Response edited comment with replies
**/
$comment = $comment->editComment("My Edit Comment" , $OptionalParamsStatus =1);

/**
 * Delete Comment
 * @return Boolean
 * This will delete the Comment as well as all replies of that Comment
**/
$comment->delete();

// First and Last Comment for the Post
$comment = $post->comments->first();
$comment = $post->comments->last();

/**
 * Fetching a single comment
 * Get comment details
**/
use Dzyfhuba\PostSys\Models\Comment;

$comment = Comment::find(1); // OR $post->addComment("My First Comment", $user);

$commentText = $comment->content; //comment content
$commentDate =  $comment->created_at; //comment created date
$commentUpdate = $comment->updated_at; //comment updated date
$commentedByUser = $comment->user; // commented user in Object
```

### Replies

[](#replies)

```
/**
 * Get all Replies for the Comment
 * @return Array|Replies
 * Response all Replies for the Comment
**/

$replies = $comment->replies;

/**
 * Add Reply to Comment
 * 	@return Object|Reply
**/
$reply = $comment->addReply("My First Reply", $user);

/**
 * Add Reply to Comment
 * @return Array|Replies
 * Response all Replies added to the comment
**/
$replies = $comment->addAllReplies("This is awesome package, I like reply feature.", $user);

/**
 * Edit Reply to Comment
 * @return Object|Reply
 * Response edited reply
**/
$reply = $reply->editReply("My Edit Reply" , $OptionalParamsStatus =1);

/**
 * Delete Reply
 * @return Boolean
 * This will delete the Reply
**/
$reply->delete();

// First and Last Reply for the Comment
$reply = $comment->replies->first();
$reply = $comment->replies->last();

/**
 * Fetching a single reply
 * Get reply details
**/
use Dzyfhuba\PostSys\Models\Reply;

$reply = Reply::find(1); // OR $comment->addReply("My First Reply", $user);

$replyText = $reply->content; //reply content
$replyDate =  $reply->created_at; //reply created date
$replyUpdate = $reply->updated_at; //reply updated date
$repliedByUser = $reply->user; // replied user in Object
```

Blade
-----

[](#blade)

Can also use in laravel blade file.

```
@foreach ($posts as $post)

    Post Id : {{ $post->id }}
    Post title : {{ $post->title }}
    Post description : {{ $post->description }}
    Post status : {{ $post->status }}
    Post created date : {{ $post->created_at }}
    Post created by User : {{ $post->user->name }}
    Comments on Post:
      @foreach ($post->comments as $comment)

          Comment : {{ $comment->content }}
          Comment created date: {{ $comment->created_at }}
          Comment created by User: {{ $comment->user->name }}
          Reply on comment :
            @foreach ($comment->replies as $reply)

                Reply : {{ $reply->content }}
                Reply created date: {{ $reply->created_at }}
                Reply created by User: {{ $reply->user->name }}

            @endforeach

      @endforeach

@endforeach
```

Advance Eloquent Model
----------------------

[](#advance-eloquent-model)

Used with &amp; withCount

```
use Dzyfhuba\PostSys\Models\Post;

$posts = Post::with('user')->where('user_id', 1)->first();
$user = User::with(['posts', 'active_posts',  'inactive_posts', 'latest_posts'])->withCount(['posts', 'active_posts', 'inactive_posts'])->get();
```

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity27

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/bbbf185195b0462a316caa35668d4d5e2058d43d17d3d917c95815daac9e78f5?d=identicon)[dzyfhuba](/maintainers/dzyfhuba)

---

Top Contributors

[![Dzyfhuba](https://avatars.githubusercontent.com/u/28922387?v=4)](https://github.com/Dzyfhuba "Dzyfhuba (2 commits)")

### Embed Badge

![Health badge](/badges/dzyfhuba-laravel-post-system/health.svg)

```
[![Health](https://phpackages.com/badges/dzyfhuba-laravel-post-system/health.svg)](https://phpackages.com/packages/dzyfhuba-laravel-post-system)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
