Laravel whereHas не работает в newQuery ()

У меня возникли проблемы с тем, чтобы часть кода работала в laravel. У меня есть класс SecuredElquent, который распространяется на все мои «защищенные» модели. то, что он делает, просто добавляет предложение whereHas к запросу в функции newQuery, которую я переопределяю:

class SecuredEloquent extends Eloquent { public function newQuery($excludeDeleted = true) { $query = parent::newQuery($excludeDeleted); $context = App::make('Wall\Context\Context'); $query->whereHas('permissions', function($q) use ($context) { $q->where('context_id','=',$context->id()); $q->where('level','>=', $context->level()); }); return $query; } } 

Проблема: она не работает. Я получаю ошибки «Соединение было сброшено» в моем браузере и ничего в журнале 🙁 Кто-нибудь знает, что я делаю неправильно?

edit2: MyModel расширяет SecuredElquent, OtherModel не делает

Когда я пытаюсь запустить его в ремесленнике, ничего не происходит. var_dump (MyModel :: все ()); просто останавливает процесс (он выходит из строя? нет идеи, снова ничего не регистрируется, он просто уходит) var_dump (OtherModel :: all ()); однако просто работает

редактировать:

У меня есть ContextServiceProvider:

 use Illuminate\Support\ServiceProvider; class ContextServiceProvider extends ServiceProvider { /** * Register */ public function register() { $this->app->singleton('Wall\Context\Context', function($app) { return new AppContext; }); } } 

с AppContext:

 use Illuminate\Database\Eloquent\Model; class AppContext { /** * The current context * * @var Illuminate\Database\Eloquent\Model */ protected $context; /** * The current context level * * @var int */ protected $level; /** * Check to see if the context has been set * * @return boolean */ public function has() { if($this->context) return true; return false; } /** * Get the context identifier * * @return integer */ public function id() { if ( $this->has() ) return $this->context->id; return 0; } /** * Get the context permission leven * * @return string */ public function level() { if ( $this->level ) return $this->level; return 1; } } 

Надеюсь это поможет

Solutions Collecting From Web of "Laravel whereHas не работает в newQuery ()"