Laravel 8 Eloquent orWhereHas Condition

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

Для условия orWhereHas() в laravel 8 мы используем три таблицы, такие как users, country и state, и во вкладке users добавляем отношения country_id и state_id. А также используем whereHas() с условием orWhereHas() в laravel 8.

Итак, давайте рассмотрим отношения orWhereHas() или условие orwherehas в laravel 8.

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

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

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

Читать далее: Как выталкивать элемент массива в Node.js


Пример: 2

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);
    }

    public function state()
    {
        return $this->belongsTo(State::class);
    }
}
Вход в полноэкранный режим Выход из полноэкранного режима

app/Models/Country.php

<?php

namespace AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

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

app/Models/State.php

<?php

namespace AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

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

Читать далее: Laravel 8 Красноречивое условие whereHas


app/Http/Controllers/UserController.php

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use AppModelsUser;

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

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