Laravel 8 Eloquent whereHas Condition

В этой статье мы рассмотрим условие whereHas() в laravel 8 eloquent. Вы узнаете об условии wherehas() в laravel 8. Я приведу простой пример использования условия wherehas() с отношениями laravel 8 eloquent. Вы также можете использовать версию laravel 6, laravel 7, laravel 8 и laravel 9.

Для условия wherehas в laravel 8 нам нужны две таблицы, такие как users и country, и в закладке users добавить country_id.

Итак, давайте посмотрим, laravel 8 wherehas запрос или laravel 8 wherehas отношения.

Пример 1: Laravel whereHas()

Laravel eloquent whereHas() метод работает в основном так же, как has(), но он просто позволяет вам указать дополнительные фильтры для проверки связанной модели.

public function index()
{
    $name = 'india';
    $users = User::with('country')
                    ->whereHas('country', function ($query) use($name){
                        $query->where('name', 'like', '%'.$name.'%');
                    })
                    ->get()
                    ->toArray();
}
Вход в полноэкранный режим Выход из полноэкранного режима

Читайте также: Как хранить данные в базе данных с помощью Node.js


Пример 2 : Laravel has()

Красноречивый метод has() Laravel используется для фильтрации модели выбора на основе выбранного отношения. Он работает аналогично методу where для отношений.

use AppModelsUser;

$users = User::has('country')->get();
Вход в полноэкранный режим Выход из полноэкранного режима

Вы также можете указать оператор и значение count для дальнейшей настройки запроса:

$posts = Post::has('comments', '>=', 3)->get();
Войти в полноэкранный режим Выйти из полноэкранного режима

Пример : 3

app/Models/User.php

<?php

namespace AppModels;

use IlluminateContractsAuthMustVerifyEmail;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateFoundationAuthUser 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 AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

class Country extends Model
{
    use HasFactory;
}
Войти в полноэкранный режим Выйти из полноэкранного режима

app/Http/Controllers/UserController.php

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use AppModelsUser;

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();  
    }
}
Войти в полноэкранный режим Выход из полноэкранного режима

Вам также может понравиться:

Читайте также: Laravel whereIn и whereNotIn пример запроса

Оцените статью
devanswers.ru
Добавить комментарий