2014-10-09 73 views
2

我想急於負載Laravel動態範圍4.2Laravel:結合的動態範圍,並與

我有以下雄辯類:

class Project extends Eloquent { 

    protected $table = 'projects'; 

    public function subProjects() { 
     return $this->hasMany('SubProject'); 
    } 
} 

Subproject類,我有以下動態範圍:

public function scopeForUserInPeriod($query, $user, $interval) { 
    return $query->whereHas('hourRegistrations', function($query) use($user, $interval) { 
    $query->where('user_id', $user->id)->whereBetween('date', [$interval->from, $interval->to]); 
    }); 
} 

現在我想在我加載我的項目時重新加載範圍,所以我做了類似的事情。

Project::with('SubProjects.ForUserInPeriod', $user, $period); 

不幸的是,with只接受要加載的關係列表。我似乎無法找到任何跡象表明我應該如何搶佔有爭議的範圍。 :-(

回答

2

不傳遞任何東西,但關係在渴望/延遲加載

你用點來表示嵌套關係,對查詢不是方法

這是你想要的。:

Project::with(['subProjects' => function ($q) use ($user, $period) { 
$q->forUserInPeriod($user, $period); 
}])->get();