laravel 4.2并忽略全局范围

时间:2016-05-12 00:01:01

标签: php laravel laravel-4 eloquent

我有一个名为(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){}

}

1 个答案:

答案 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
    }
}