У меня есть база данных со столами: вопросы, ответы, ответы и респонденты. У вопросов есть ответы, которые имеют ответы, которые принадлежат респонденту (у респондентов может быть много ответов).Eloquent WhereHas With Несколько вложенных элементов из массива
Я пытаюсь сделать корреляции, обнуляя все ответы на вопросы, связанные с респондентами, которые выбрали определенный ответ на вопрос. Итак, что еще ответили люди, которые отвечали, что им было 18-20 лет.
Фокус в том, что я хочу сделать это через нескольких респондентов и несколько ответов. Например, что еще люди, которые составляют 18-20 лет, и, как и цвет зеленый, такие как:
В настоящее время у меня это работает «или», когда каждый дополнительный answer_id я добавляю вытягивание респондентов, которые выбрали одну из два ответа:
$cFilters = array() of answer_ids;
$respondents = Auth::user()->account->respondents()
->whereHas('responses', function($q) use($cFilters) {
$q->whereIn('responses.answer_id', $cFilters);
})->get();
Я бы в конечном счете, хотел, чтобы они, работающие в «и» моды, где добавление в другом answer_id показывает только респонденты, которые выбрали оба ответа, выявленных answer_ids, не вполне может понять, что один вне. Вот то, что я пытался до сих пор, что не вызывает ошибки, но и, кажется, не работать правильно:
$cFilters = array() of answer_ids;
$respondents = Auth::user()->account->respondents()
->whereHas('responses', function($q) use($cFilters) {
foreach($cFilters as $answer_id) {
$q->where('responses.answer_id', $answer_id);
}
})->get();