xxxxxxxxxx
<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
class ActiveScope 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)
{
$builder->where('is_active', '=', 1);
}
}
xxxxxxxxxx
public function boot()
{
parent::boot();
Route::bind('project', function($id) {
return \App\Project::withoutGlobalScopes()->findOrFail($id);
});
}
xxxxxxxxxx
protected static function booted()
{
self::addGlobalScope('latest', function ($query){
$query->latest('updated_at');
});
}
xxxxxxxxxx
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Scope a query to only include popular users.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopePopular($query)
{
return $query->where('votes', '>', 100);
}
/**
* Scope a query to only include active users.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return void
*/
public function scopeActive($query)
{
$query->where('active', 1);
}
}
xxxxxxxxxx
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Scopes\ActiveScope;
class User extends Model
{
protected $fillable = [
'name','email','password','is_active',
];
protected static function boot()
{
parent::boot();
static::addGlobalScope(new ActiveScope);
}
}
xxxxxxxxxx
protected static function boot()
{
parent::boot();
static::addGlobalScope(new ArchiveScope);
}
xxxxxxxxxx
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Scopes\ActiveScope;
class Admin extends Model
{
protected $fillable = [
'name','email','password','is_active',
];
protected static function boot()
{
parent::boot();
return static::addGlobalScope(new ActiveScope);
}
}