Я пытаюсь загрузить динамическую область в Laravel 4.2
У меня есть следующий класс Eloquent:
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
принимает только список отношений для загрузки. Кажется, я не могу найти никаких указаний на то, как я должен загружать области, которые принимают аргументы. 🙁
Вы не пропустите ничего, кроме отношений, когда ленивая / ленивая загрузка.
Точки используются для обозначения вложенных отношений, а не методов запроса.
Это то, что вы хотите:
Project::with(['subProjects' => function ($q) use ($user, $period) {
$q->forUserInPeriod($user, $period);
}])->get();
Других решений пока нет …