回答編集履歴

1 助詞

Bremenkanp

Bremenkanp score 203

2019/03/06 14:08  投稿

EloquentのScopesを探しているんでしょうか?
```php
class User extends Model
{
   public function scopeSuper($query)
   {
       $query->where('super', true);
   }
   public function scopeNotSuper($query)
   {
       $query->where('super', false);
   }
}
class SuperUser extends User
{
   public $table = 'user';
   protected static function boot()
   {
       parent::boot();
       static::addGlobalScope('super', function ($builder) {
           $builder->super();
       });
   }
}
class NormalUser extends User
{
   public $table = 'user';
   protected static function boot()
   {
       parent::boot();
       static::addGlobalScope('not-super', function ($builder) {
           $builder->notSuper();
       });
   }
}
```
そうしたらコントローラー内に
```php
public function index()
{
   return NormalUser::all(); // super着いていないユーザー一覧、それとも・・・
   return SuperUser::all(); // super着いているユーザー一覧、それとも・・・
   return User::all(); // ユーザー一覧
}
// super着いているユーザーならModelNotFoundExceptionが投げられて、404になる。
public function show(NormalUser $user)
{
   return $user;
}
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る