2015-09-07 2 views
1

Я хотел бы иметь модель с глобальной областью запросов, которая будет обладать полиморфными отношениями один к одному.Laravel global scope с отношениями

Дело в том, что все работает, и я могу создать глобальную область запроса, но я не получаю связь в функции apply в классе глобальных запросов. Я хотел бы сделать запрос с отношениями вместо того, чтобы просто делать запрос на объединение или что-то еще.

Кто-нибудь знает, если это возможно?

У меня есть следующий код:

class Content extends Model { 
    use Environmentabletrait; 
} 

trait EnvironmentableTrait { 
    public static function bootEnvironmentableTrait() { 
     static::addGlobalScope(new EnvironmentScope); 
    } 

    public function environment() { 
     return $this->morphOne(Environment::class, 'environmentable'); 
    } 
} 

class Environment extends Model { 
    public function environmentable() { 
     return $this->morphTo(); 
    } 
} 

class EnvironmentScope implements ScopeInterface { 
    public function apply(Builder $builder, Model $model) { 
     $builder-> ... 
    } 
} 

И

Я надеюсь, что я объяснил это достаточно хорошо;)

Большое спасибо заранее

ответ

1

Никогда не возражаете, я ve зафиксировал его следующим кодом:

public function apply(Builder $builder, Model $model) 
{ 
    return $builder->whereHas('environment', function ($query) { 
     $query->where('environment', app()->environment()); 
    }); 
}