In this article, we will explain to you how to create model eloquent query scope in laravel 8 or how to use model eloquent query scope in laravel 8(Laravel 8 Query Scope Example Tutorial).
The laravel scope is one type of query. That helps to create the dynamic query scope in laravel 8 application. if you want to create a custom query then we can easily create a custom query scope by using laravel scopes eloquent tutorial example.
sometimes, we use the same logic another time but if you do not want use to the same logic again then you can use the laravel model eloquent scope.
Create Scope in Model
In this example, we will add the scope query in our model file. so you can see our example file.
app/Models/Post.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Post extends Model { use HasFactory; public $table = "posts"; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'id', 'title', 'body', 'status' ]; /** * Scope a query to only include popular users. * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopeToday($query) { return $query->whereDate('created_at', \Carbon\Carbon::today()); } }
Use query scope in laravel
Here, we will use the query scope in controller file. so you can see our example.
PostController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Post; class PostController extends Controller { public function index(){ $data = Post::select("*")->today()->get(); dd($data); } } ?>
Dynamic scope query in laravel
In this example, we will add the dynamic scope query in our model file. so you can see our example file.
app/Models/Post.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Post extends Model { use HasFactory; public $table = "posts"; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'id', 'title', 'body', 'status' ]; /** * Scope a query to only include popular users. * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopeStatus($query, $type) { return $query->where('status', $type); } }
Use dynamic query scope in laravel
Here, we will use the dynamic query scope in controller file. so you can see our example.
PostController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Post; class PostController extends Controller { public function index(){ $data = Post::select("*")->status(1)->get(); dd($data); } } ?>