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.
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());
}
}
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);
}
}
?>
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);
}
}
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);
}
}
?>