Laravel 8 Eloquent whereHas Condition

WebSolutionStuff | Oct-06-2021 | Categories : Laravel

In this example we will see laravel 8 eloquent whereHas() condition. you will learn about wherehas() condition in laravel 8. I will give you simple example of how to use wherehas() condition with laravel eloquent relationship. you can also use with laravel 6, laravel 7 and laravel 8 version.

For wherehas condition in laravel 8 we need two table like users and country and in users tabel add country_id.

So, let's start to implements laravel 8 whereHas() realationship.

Example 1 : Laravel whereHas()

Laravel eloquent whereHas() method works basically the same as has() but it just allows you to specify additional filters for the related model to check. 

public function index()
{
    $name = 'india';
    $users = User::with('country')
                    ->whereHas('country', function ($query) use($name){
                        $query->where('name', 'like', '%'.$name.'%');
                    })
                    ->get()
                    ->toArray();
}

 

 

Example 2 : Laravel has()

 Laravel eloquent has() method is used to filter the selecting model based on the selected relationship. It works similarly to where method for relations.

use App\Models\User;

$users = User::has('country')->get();

You may also specify an operator and count value to further customize the query: 

$posts = Post::has('comments', '>=', 3)->get();

 

Example : 3

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;
  
class User extends Authenticatable
{
    
    protected $fillable = [
        'name',
        'email',
        'password',
    ]; 
  
    public function country()
    {
        return $this->belongsTo(Country::class);
    }
}

app/Models/Country.php

<?php
  
namespace App\Models;
  
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
  
class Country extends Model
{
    use HasFactory;
}

 

app/Http/Controllers/UserController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use App\Models\User;
  
class UserController extends Controller
{
    public function index()
    {
        $name = 'india';
        $users = User::with('country')
                        ->whereHas('country', function ($query) use($name){
                            $query->where('name', 'like', '%'.$name.'%');
                        })
                        ->get()
                        ->toArray();  
    }
}

 


You might also like :



Recommended Post


Featured Post







Follow us
facebooklogo github instagram twitter

Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock or some other adblocking software which is preventing the page from fully loading.

We need money to operate the site, and almost all of it comes from our online advertising.

Please add websolutionstuff to your ad blocking whitelist or disable your adblocking software.

×