How to check if user has created any post or not in laravel

You can check if user has created post or not in laravel using has() method on relation model. Here has() method returns the null value if user has not created any post. If user has created any post then it will return the user record from the table.

Answers 1
  • Check if user has created posts or not in laravel using has method

    $userHasPosts = User::has('posts')->find(Auth::user()->id);
    dd($userHasPosts);
    
    //app\Models\User.php
    //Model path may be different as per your laravel version
    public function posts(){
        return $this->hasMany(Post::class);
    }
    
    0

    Output :

    Return user details from table if user has created any post

    App\Models\User {#1556 ▼
      #fillable: array:13 []
      #hidden: array:2 []
      #casts: array:1 []
      #connection: "mysql"
      #table: "users"
      #primaryKey: "id"
      #keyType: "int"
      +incrementing: true
      #with: []
      #withCount: []
      +preventsLazyLoading: false
      #perPage: 15
      +exists: true
      +wasRecentlyCreated: false
      #attributes: array:23 []
      #original: array:23 []
      #changes: []
      #classCastCache: []
      #dates: []
      #dateFormat: null
      #appends: []
      #dispatchesEvents: []
      #observables: []
      #relations: []
      #touches: []
      +timestamps: true
      #visible: []
      #guarded: array:1 []
      #rememberTokenName: "remember_token"
    }

    If user has not created any post 
     
    null

    This code snippet will return the record from the users table if there are post records (from the related post table) that belong to this particular user exists in the posts table else it will return null.  To achieve this you have to create a users table with column id (primary key) and posts table with user_id (foreign key) in the database. You have to also create a hasMany relationship with name posts in the user model.

  • Back to code snippet queries related laravel