My Scope:
<?php
namespace App\Scopes;
use Auth;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
class InventorySeriesScope 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
*/
// withoutGlobalScope(ClinicScope::class)
public function apply(Builder $builder, Model $model)
{
$table = $model->getTable();
$builder->where($table . '.is_used',0);
}
}
InventorySeries Model where scope is used:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Scopes\InventorySeriesScope;
class InventorySeries extends Model
{
use SoftDeletes;
protected $table="inventory_series";
protected $primarykey="id";
protected $guarded=['id'];
protected static function boot()
{
parent::boot();
static::addGlobalScope(new InventorySeriesScope);
}
}
My model where i am using withoutGlobalScope:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class GatePassOutwardEntryChild extends Model
{
use SoftDeletes;
protected $table = 'gatepass_outward_entry_child';
protected $PrimaryKey = 'id';
protected $guarded = ['id'];
public function inventoryseries()
{
return $this->hasMany('App\Models\InventorySeries','gatepass_outward_child_id','id')->withoutGlobalScope(InventorySeriesScope::class);
}
}
My controller where I want my data withoutGlobalScope which gives data including global scope
$data['child'] = GatePassOutwardEntryChild::with('inventoryseries')->get();
dd($data['child'][0]);
In this as a result I am getting data for inventoryseries
with is_used
as 0 but I have some records with is_used
as 0 and 1 both, I want all that records not only with 0
give full path in your model instead of using class like
public function inventoryseries()
{
return $this->hasMany('App\Models\InventorySeries','gatepass_outward_child_id','id')->withoutGlobalScope("App\Scopes\InventorySeriesScope");
}
It works for me !!