В этой статье мы рассмотрим условие 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();
}
}