November 21, 2021 09:41 am GMT
Original Link: https://dev.to/marcosgad/wherehas-in-laravel-1laa
WhereHas() In Laravel
Let's get started quickly
You may want to base your results on the existence of a relationship. For example, imagine that you want to retrieve all projects that have project_one starting with ,CSS. To do this, you can pass the name of the relationship to the whereHas() method and specify additional query constraints for has queries
Project::whereHas('project_one', function (Builder $query) { $query->where('title', 'like', 'CSS%');})->get();
use with() method with WhereHas()
Project::with('project_one')->whereHas('project_one', function (Builder $query) { $query->where('title', 'like', 'CSS%');})->get();
Now, Let's be more professional
public function scopeWithWhereHas($query, $relation, $constraint){ return $query->whereHas($relation, $constraint)->with([$relation => $constraint]);}
Then
Project::withWhereHas('project_one', fn($query) => $query->where('title', 'like', 'CSS%'))->get();
Since this query builder may be needed in many Models in AppServiceProvider::boot()
use Illuminate\Database\Eloquent\Builder;Builder::macro('withWhereHas', fn($relation, $constraint) => $this->whereHas($relation, $constraint)->with([$relation => $constraint]););
I hope you enjoy the code.
Original Link: https://dev.to/marcosgad/wherehas-in-laravel-1laa
Share this article:
Tweet
View Full Article
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To