2015-12-02 48 views
8

在項目中,我有類配置這樣急於關係很多雄辯型號:禁用急於關係

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

但有時我需要沒有任何關係,只是普通的舊模式。我可以以某種方式做:

Model::noRelations()->all() 

真的不想使用查詢生成器也不創建另一個類只是少數場合。

回答

17

如果你必須設置你的模型的$with屬性,而不是留空,您可以手動覆蓋需要急於關係加載這樣的:

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

Link to API for setEagerLoads

+0

就像一個魅力!正是我需要的。 –

+0

我該如何實現這個,如果這個模型被引用與其他模型的關係像ModelTwo :: with('modelOne') - > get();那麼如何避免加載modelOne呢? – BlackBurn027

6

除了托馬斯金的回答。

如果您無論如何擴展Eloquent \ Model類並且經常需要從模型中剝離關係,該解決方案可能適合您。

  1. 在默認的模型類創建範圍:

    public function scopeNoEagerLoads($query){ 
        return $query->setEagerLoads([]); 
    } 
    
  2. 對於任何ORM,這擴展了類,你將能夠:

    User::noEagerLoads()->all()