ItSolutionStuff.com

Laravel Eloquent doesntHave() Condition Example

By Hardik Savani • April 16, 2024
Laravel

I am going to explain you example of laravel doesntHave condition example. if you have question about laravel relationship doesntHave then i will give simple example with solution. This post will give you simple example of laravel doesntHave relationship example. We will use laravel relationship doesntHave condition. Follow bellow tutorial step of laravel doesntHave relationship column.

Here, i will give you very simple example of how to use doesntHave condition with laravel eloquent relationship. you can also use with laravel 6, laravel 7, laravel 8, laravel 9, laravel 10 and laravel 11 version.

Sometime we need to get only records that does not have records on relation table. for example i need to get only that users that does not paid. so here i will give you simple two example one will doesntHave() and whereDoesntHave().

Here, you can see simple example and then you can also see full example with output:

Example 1: Laravel doesntHave()

public function index()

{

$users = User::select("*")

->doesntHave("payments")

->get();

dd($users);

}

Example 2: Laravel whereDoesntHave()

public function index()

{

$month = '09';

$users = User::select("*")

->whereDoesntHave('payments', function (Builder $query) use($month){

$query->whereMonth('payment_date', $month);

})

->get();

dd($users);

}

Full Example:

Table Data with Screenshot:

users:

user_payments:

Models Code:

app/Models/User.php

<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;

use Illuminate\Database\Eloquent\Factories\HasFactory;

use Illuminate\Foundation\Auth\User as Authenticatable;

use Illuminate\Notifications\Notifiable;

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable

{

use HasApiTokens, HasFactory, Notifiable;

/**

* The attributes that are mass assignable.

*

* @var string[]

*/

protected $fillable = [

'name',

'email',

'password',

];

/**

* The attributes that should be hidden for serialization.

*

* @var array

*/

protected $hidden = [

'password',

'remember_token',

];

/**

* The attributes that should be cast.

*

* @var array

*/

protected $casts = [

'email_verified_at' => 'datetime',

];

/**

* Get the comments for the blog post.

*/

public function payments()

{

return $this->hasMany(UserPayment::class);

}

}

app/Models/UserPayment.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;

use Illuminate\Database\Eloquent\Model;

class UserPayment extends Model

{

use HasFactory;

}

Example 1: Controller Code:

app/Http/Controllers/DemoController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\User;

class DemoController extends Controller

{

/**

* Write code on Method

*

* @return response()

*/

public function index()

{

$users = User::select("*")

->doesntHave("payments")

->get();

dd($users);

}

}

Output:

Array

(

[0] => Array

(

[id] => 3

[name] => Haresh

[country_id] => 2

[state_id] => 1

[email] => savanihd2@gmail.com

[email_verified_at] =>

[current_team_id] =>

[profile_photo_path] =>

[created_at] => 2020-09-12T06:46:08.000000Z

[updated_at] => 2020-09-18T12:04:09.000000Z

[deleted_at] =>

)

)

Example 2: Controller Code:

app/Http/Controllers/DemoController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\User;

class DemoController extends Controller

{

/**

* Write code on Method

*

* @return response()

*/

public function index()

{

$month = '09';

$users = User::select("*")

->whereDoesntHave('payments', function (Builder $query) use($month){

$query->whereMonth('payment_date', $month);

})

->get();

dd($users);

}

}

Output:

Array

(

[0] => Array

(

[id] => 1

[name] => Hardik Savani

[country_id] => 2

[state_id] => 1

[email] => savanihd@gmail.com

[email_verified_at] =>

[current_team_id] =>

[profile_photo_path] =>

[created_at] => 2020-09-12T06:46:08.000000Z

[updated_at] => 2020-09-18T12:04:09.000000Z

[deleted_at] =>

)

[1] => Array

(

[id] => 3

[name] => Haresh

[country_id] => 2

[state_id] => 1

[email] => savanihd2@gmail.com

[email_verified_at] =>

[current_team_id] =>

[profile_photo_path] =>

[created_at] => 2020-09-12T06:46:08.000000Z

[updated_at] => 2020-09-18T12:04:09.000000Z

[deleted_at] =>

)

)

i hope it can help you...

Tags: Laravel
Hardik Savani

Hardik Savani

I'm a full-stack developer, entrepreneur, and founder of ItSolutionStuff.com. Passionate about PHP, Laravel, JavaScript, and helping developers grow.

📺 Subscribe on YouTube

We Are Recommending You

Laravel Eloquent whereRelation() Condition Example

Read Now →

Laravel Eloquent whereHas() Condition Example

Read Now →

Laravel Eloquent Select Single Column to Array Example

Read Now →

Laravel Eloquent Group By Year with Sum Example

Read Now →

Laravel Eloquent Group By with Month and Year Example

Read Now →

Laravel Eloquent When Condition Example

Read Now →

Laravel Eloquent Left Join Where Null Condition Example

Read Now →

Laravel Eloquent whereNotBetween() Query Example

Read Now →

Laravel Eloquent exists() and doesntExist() Example

Read Now →

Laravel Eloquent Where Query Examples

Read Now →

Laravel Many to Many Eloquent Relationship Tutorial

Read Now →

Laravel Has Many Through Eloquent Relationship Tutorial

Read Now →