我有一个名为(TicketModel)的模型Eloquent,
我添加了一个全局范围来获取用户的所有票证,但有时候,我想使用没有此范围的票证怎么做呢?怎么可以忽略这个范围
这是模型
<?php
class TicketModel extends Eloquent{
public $timestamps = false;
public static function boot()
{
static::addGlobalScope(new TicketScope);
}
}
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\ScopeInterface;
class TicketScope implements ScopeInterface {
public function apply(Builder $builder)
{
$builder->where('user_id', '=', Auth::user()->id_user);
}
public function remove(Builder $builder){}
}
答案 0 :(得分:1)
为需要范围的案例设置子课程怎么样?
以下是一个例子:
class TicketModel extends Eloquent
{
// Your model stuff here
}
class UserTicketModel extends TicketModel
{
public static function boot()
{
static::addGlobalScope(new TicketScope);
}
}
这个想法有时候不要忽视范围,而是在需要时使用它。
如果你真的希望没有范围的模型成为例外,那么让SimpleTicketModel
继承TicketModel
并覆盖boot()
方法,这样它就不会使用范围,就像这样:
class TicketModel extends Eloquent
{
public static function boot()
{
static::addGlobalScope(new TicketScope);
}
}
class SimpleTicketModel extends TicketModel
{
public static function boot()
{
// Do nothing else
}
}