2015-12-02 10 views
8

W moim projekcie mam wiele modeli, które mają wymowny stosunki chętnych skonfigurowane w klasie tak:Wyłącz stosunki chętny

protected $with = [ 'countries', 'roles' ]; 

Ale czasami trzeba po prostu zwykły starego modelu bez żadnych stosunków. Czy mogę jakoś:

Model::noRelations()->all() 

Naprawdę nie chcesz używać budowania zapytań ani tworzyć innej klasy tylko na kilka okazji.

Odpowiedz

17

Jeśli trzeba ustawić właściwość $with modelu zamiast pozostawiając puste, można ręcznie zmienić relacje, które muszą być chętni załadowany tak:

Model::setEagerLoads([])->get(); 

Link to API for setEagerLoads

+0

działa jak czar ! Dokładnie to, czego potrzebuję. –

+0

Jak mogę to zaimplementować, jeśli Model ten jest kierowany w stosunku do innego Modelu podobnego do ModelTwo :: with ('modelOne') -> get(); jak uniknąć szybkiego ładowania dla modelOne? – BlackBurn027

6

Oprócz odpowiedzi Thomasa Kima.

Jeśli mimo wszystko rozszerzysz klasę Eloquent \ Model i często będziesz musiał zerwać relacje z modelu, rozwiązanie to może ci się spodobać.

  1. Tworzenie zakresu w swojej domyślnej klasy modelu:

    public function scopeNoEagerLoads($query){ 
        return $query->setEagerLoads([]); 
    } 
    
  2. dla dowolnego ORM, który rozciąga się, że klasa będzie można do:

    User::noEagerLoads()->all() 
    
Powiązane problemy