1. Go to this page and download the library: Download mustafaomar/laravel-qsw library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mustafaomar / laravel-qsw example snippets
use QueryWatcher\Traits\Scopable;
class Article extends Model
{
use HasFactory, Scopable;
}
namespace App\Scopes;
use QueryWatcher\Contracts\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
class ArticleStatusScope implements Scope
{
/**
* Apply the scope to a given Eloquent query builder.
*
* @param \Illuminate\Database\Eloquent\Builder $builder
* @param \Illuminate\Database\Eloquent\Model $model
* @return void
*/
public function apply(Builder $builder, Model $model)
{
//
}
}
public function index(Request $request)
{
$article = Article::watch($this->queryWatchers())->first();
return response()->json($article);
}
protected function queryWatchers()
{
return [
// 'comments' => ArticleCommentScope::class,
// Notice: sometimes you may want to apply the scope
// when two query parameters are presented, you can do this with:
'when:from,to' => ArticleRangeScope::class,
'sort' => ArticleSortScope::class
];
}
class ArticleRangeScope implements Scope
{
public $from;
public $to;
/**
* Apply the scope to a given Eloquent query builder.
*
* @param \Illuminate\Database\Eloquent\Builder $builder
* @param string|number $value
* @return void
*/
public function apply(Builder $builder, Model $model)
{
$builder->whereBetween('created_at', [$this->from, $this->to]);
}
}
// Sort scope
class ArticleSortScope implements Scope
{
public $sort;
/**
* Apply the scope to a given Eloquent query builder.
*
* @param \Illuminate\Database\Eloquent\Builder $builder
* @param string|number $value
* @return void
*/
public function apply(Builder $builder, Model $model)
{
if ($this->sort === 'newest') {
$builder->latest();
} else if ($this->sort === 'oldest') {
$builder->oldest();
}
// ...
}
}
use QueryWatcher\Facades\QueryWatcher;
use Illuminate\Database\Eloquent\Builder;
class Article extends Model
{
use HasFactory;
/**
* Register the query string params to watch
*
* @param \Illuminate\Database\Eloquent\Builder $builder
* @param array $scopes
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeScopes(Builder $builder, $scopes)
{
$instance = QueryWatcher::getInstance();
// Or by resolving query watcher from the container
$instance = app('laravel.qsw');
$instance->watch($builder, $scopes);
return $builder;
}
}
$article = Article::scopes([])->first();
bash
php artisan make:scope ArticleStatusScope
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.