Как проверить, содержат ли возможные варианты пользователя результаты

#laravel #octobercms

Вопрос:

У меня есть эта форма с шагами, на каждом шаге форма отправляет и возвращает результаты через AJAX.

Когда пользователь выбирает первый шаг, активируется второй шаг, и пользователю предлагаются три варианта, которые могут содержать или не содержать дополнительные результаты в зависимости от выбора пользователя. Дело в том, что я хотел бы ограничить возможные варианты выбора пользователя на втором шаге в зависимости от того, содержит ли выбор результаты или нет.

В принципе, мне нужно было бы запустить запросы заранее, и если они содержат результаты, то они должны появиться, а если нет, то они не должны быть видны.

 
$this->firstChoice = (int) Input::get('first_choice');
$this->secondChoice = (int) Input::get('second_choice');

$this->results = Class::with('relation');

if(isset($this->firstChoice ) amp;amp; $this->firstChoice > 0) {
    $id = $this->firstChoice ;
    $this->results->whereHas('first-relationship', function($q) use($id) {
        $q->where('id', $id);
    })
}

if(isset($this->secondChoice ) amp;amp; $this->secondChoice > 0) {
    $id = $this->secondChoice ;
    $this->results->whereHas('second-relationship', function($q) use($id) {
        $q->where('id', $id);
    })
}

** before the second step is checked i need to run a query check on the second 
relationship and if the possible choice contains results then i need to show only those options **
 

Я пробовал что-то подобное, но безуспешно.

 
if($this->results->whereHas('second-relationship', function($q) {
     $q->where('id', 1);
})->count() > 0) {
    $newArray = ['push results here and then return it to the front end']
} // this repeated 3 times for the three possible choices

** ID = 1 for the first option id - i have tried it hard coded and also in a foreach loop
where the id's were dynamic but without any success **
 

Во вторую секунду я запускаю запрос, чтобы проверить, есть ли у вариантов возможные результаты, код прерывается.

Я просто хотел бы знать, как запустить проверку для возможного выбора пользователей и их результатов.

Как я должен подойти к этой проблеме, любая помощь будет очень признательна.

Закодировано в октябре 2010 года.

Комментарии:

1. Я добавил ответ, но, похоже, без вашей схемы базы данных немного сложно предсказать полное решение

Ответ №1:

Вы можете сделать что-то подобное, вам нужно сделать весь свой следующий шаг в зависимости от текущего выбора.

Например: первым шагом будет то CHOICES , у кого есть следующий выбор (я объясняю ниже).

Теперь, когда пользователь выбирает и отправляет результат, сделайте ajax и представьте другую форму, с CHOICES помощью которой у вас есть следующий выбор.

 // for OUR form NO. 1
// Retrieve all choose which has at lesat one choice
// this could be your `onShowFirstForm`
$choices = Choice::has('children')->get();

// NOW user select one of them
// for Next form prepare choices
// this could be your `onNextForm`
$choices = Choice::find($selectedChoiseId)->has('children')->fetch();

// and so on
// you can continue ... with this
 

Вот есть только одна остановка, В какой-то момент вы получите $choices будет пусто, так как они не могут иметь дальше child — > в этот момент вы можете просто показать сообщение и т. Д

если есть какие-либо сомнения, пожалуйста, прокомментируйте.

Комментарии:

1. Привет, Хардик, спасибо за ваш ответ, чтобы было понятнее, у меня есть модель, содержащая все варианты со второго шага, которые я хочу ограничить на основе выбора первого шага, я показываю результаты модели в функции OnRender ex; $this[‘результаты’] = Model::all (), мне нужно изменить эту переменную и передать ее результаты частичному, который я обновляю при отправке. Мне нужно знать, как выполнить запрос в коллекции $this->результаты со всеми возможными вариантами на втором шаге, основанными на том, что пользователь выберет на первом шаге. Я надеюсь, что мне достаточно ясно, в чем я хочу участвовать. Спасибо.

2. хорошо, эта проблема связана с базой данных/моделированием ИЛИ частичной визуализацией.

3. Проблема в том, что я не могу найти способ выполнить контрольный запрос, который проверяет, есть ли в коллекции $this->результаты результаты, основанные на трех возможных вариантах на втором шаге, визуализации результатов, которых я могу достичь без проблем после получения желаемых результатов. На мой взгляд, мне нужно проверить, есть ли у этой коллекции результаты, и если есть, то заполнить массив, который позже вернется в виде частичного обновления.

4. Самый простой способ задать мой вопрос заключается в следующем: я хочу проверить, есть ли у отношения коллекции какие-либо результаты, основанные на идентификаторах (id = 1, 2 и 3), и если у этой коллекции есть результат, создайте новую коллекцию и отправьте туда результаты. Когда выбран первый шаг, то на втором шаге есть выбор 1, 2 и 3, в выборе 1 при выборе нет элементов, в выборе 2 неф 3 есть. Возьмите эти варианты и поместите их в коллекцию, а позже я покажу их на переднем плане.