Недавно я столкнулся с проблемой доступа и фильтрации глубоко вложенных отношений, поэтому решил обратиться за помощью.Фильтрация глубоко вложенных отношений
Итак, у меня есть дб структура: http://s21.postimg.org/motrjy3dj/Screenshot_from_2015_07_24_12_14_51.png
И мне нужно, чтобы получить все команды в рамках проекта, а затем для каждой команды мне нужно получить назначенные пользователь (из этой группы).
Пока все хорошо, моя проблема начинается, когда я пытаюсь получить предложение для каждого пользователя. У пользователя может быть только одно предложение для назначенной команды, что приводит меня к проблеме.
Вот мой код:
$project = Project::with("variants")
->with(array(
"teams" => function($query) {
$query->with(array(
"users" => function($query) {
$query->with("offers");
}
));
}
))
->find($projectID);
У меня есть hasManyThrough отношения «предложения» в модели «User», который возвращает мне все предложения для пользователей, но на самом деле мне просто нужно (один) предложение для соответствующего team_user Таблица.
Я попытался фильтрация предлагает прицелы, но это плохое решение, потому что для каждого пользователя у меня есть дополнительный запрос к БД ..
Есть ли какой-нибудь способ, чтобы фильтровать эти предложения динамически?
Спасибо!
Ну что обязательно должны работать, но я был отчасти в надежде сохранить все мои запросы под красноречивые ОРМ, так как, как я понял, что это может работать с различными типами баз данных, в отличие от Fluent. –
На самом деле у Джона нет разницы в поддержке базы данных между Eloquent и простым построителем запросов 'DB :: table()'. Они оба используют один и тот же движок внизу, и оба имеют одинаковые запросы. Но я обновил свой ответ на использование Eloquent по запросу. –