Php Laravel:将动态范围和

Php Laravel:将动态范围和,php,laravel,eloquent,eager-loading,Php,Laravel,Eloquent,Eager Loading,我试图在Laravel4.2中加载一个动态范围 我有以下雄辩的课程: class Project extends Eloquent { protected $table = 'projects'; public function subProjects() { return $this->hasMany('SubProject'); } } 在子项目类中,我有以下动态范围: public function scopeForUserInPerio

我试图在Laravel4.2中加载一个动态范围

我有以下雄辩的课程:

class Project extends Eloquent {

    protected $table = 'projects';

    public function subProjects() {
        return $this->hasMany('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
只接受要加载的关系列表。我似乎找不到任何关于如何加载包含参数的作用域的指示:-(

在急切/延迟加载时,除了传递关系外,不传递任何其他内容

使用点表示嵌套关系,而不是查询上的方法

这就是你想要的:

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