Laravel: сохранить радиогруппу с помощью ключа различия

Я хочу сохранить группу радиостанций в базе данных с другим question_id

Я пытался использовать форму с радио-входом name = answer

контроллер:

public function store(Request $request, Survey $survey)
    {   
        $question = \App\Question::where('survey_id', '=' , $survey->id)->get();
        $request->validate([
            'answer'=>'required'
          ]);
         $arr = $request->except('_token');
          $newAnswer = new Answer();
          $newAnswer->answer = request()->get('answer');
          foreach ($survey->questions as $key=>$question){
            $newAnswer->question_id = $question->id;
          }
          $newAnswer->user_id = Auth::id();
          $newAnswer->last_ip = request()->ip();
          $newAnswer->survey_id = $survey->id;
          $newAnswer->commentaire = request()->get('commentaire');
          givePoint(new VoteAdded($newAnswer));
          $newAnswer->save(); 

          return redirect()->action('SurveyController@view_survey_answers', [$survey->id]);
    }

Посмотреть :

<div id="Create" class="col-12" style="display:none;">             
         {!! Form::open(array('action'=>array('AnswerController@store', $survey->id))) !!}
         <div class="text-center">
         <img class="rounded"
         src="https://interactive-examples.mdn.mozilla.net/media/examples/grapefruit-slice-332-332.jpg"
         alt="Grapefruit slice atop a pile of other slices" />
         </div>
         <hr>
          @foreach ($survey->questions as $question)

            <p class="flow-text">Question {{ $zero++}} - {{ $question->title }}</p>
                @if($question->question_type === 'text')
                <div class="form-group" style="margin-left: 20px;">
                  <div class="input-field col s12">
                    <input id="answer" type="text" name="answer">
                    <label for="answer">Answer</label>
                  </div> 
                </div>
                @elseif($question->question_type === 'textarea')
                <div class="form-group" style="margin-left: 20px;">
                  <div class="input-field col s12">
                    <textarea id="textarea1" class="materialize-textarea" name="{{ $question->id }}[answer]"></textarea>
                    <label for="textarea1">Textarea</label>
                  </div>
                </div>
                @elseif($question->question_type === 'radio')
                  @foreach($question->option_name as $key=>$value)
                    <p style="margin:0px; padding:0px;">
                      @if($value === 'else')
                      <div class="form-group" style="margin-left: 20px;">
                        <input name="answer" class="custom-control-input" type="radio" id="{{ $value }}" value="{{$value}}"/>
                        <label class="custom-control-label" for="{{ $value }}">{{ $value }}</label>
                        <div id="textboxes" style="display: none">
                            <br>
                            <textarea class="form-control" name="commentaire" id="exampleFormControlTextarea1" rows="3" placeholder="Write a large text here ..."></textarea>
                        </div>
                      </div> 
                        @else
                      <p style="margin:0px; padding:0px;">
                        <div class="form-group" style="margin-left: 20px;">
                        <input name="answer[{{$question->id}}]" class="custom-control-input" type="radio" id="{{ $value }}" value="{{ $value}}"/>
                        <label class="custom-control-label" for="{{ $value }}">{{ $value }}</label>
                        </div>
                    </p>
                        @endif
                  @endforeach
                @elseif($question->question_type === 'checkbox')
                  @foreach($question->option_name as $key=>$value)
                  <p style="margin:0px; padding:0px;">
                      <div class="form-group">
                      <input type="checkbox" id="{{ $value }}" name="answer" value="{{$value}}"/>
                      <label for="{{$value}}">{{ $value }}</label>
                      </div>
                  </p>
                  @endforeach
                @endif 
              <div class="divider" style="margin:10px 10px;"></div>
              @endforeach
          <div class="form-group">
        {{ Form::submit('Submit Survey', array('class'=>'btn btn-success mt-4')) }}
          </div>
        {!! Form::close() !!}

                 </div>

Таблицы: я уже сделал:

  • Таблица ответов = id, survey_id, question_id, answer. комментарий, отметка времени
  • Таблица опроса: название идентификатора ...
  • таблица вопросов: id, suvey_id, option_type, options

Я получил в своей базе данных массив: ["question_id" = "value"], что я хочу, например, у меня есть 2 вопроса, в моей базе данных я хочу сохранить 2 строки с некоторым идентификатором опроса, но другим идентификатором вопроса

не могли бы вы помочь мне в этом?


person Salem loress    schedule 17.08.2019    source источник
comment
Если вам нужно больше данных, таких как модель ... напишите мне комментарий и спасибо   -  person Salem loress    schedule 17.08.2019


Ответы (1)


-Поскольку в одном опросе может быть много вопросов, создайте отдельную таблицу для таких вопросов, как survey_questions. -Вы можете вставлять в несколько таблиц одновременно, написав запросы вставки для таблицы вопросов опроса и опроса отдельно и заключив их в транзакцию. В Laravel вы можете сделать что-то вроде

try{
    DB::transaction();
    //insert in survey table
    //insert in survey questions table
    DB::commit();
} catch(\Exception $e){
    DB::rollback()
}
person Nikhil Kamath    schedule 17.08.2019
comment
я уже сделал это: - Таблица ответов = id, survey_id, question_id, answer. commentaire, timestamp - Таблица опроса: id title ... - Таблица вопросов: id, suvey_id, option_type, options - person Salem loress; 17.08.2019
comment
Вы хотите вставить записи во все 3 таблицы одновременно, верно? - person Nikhil Kamath; 17.08.2019
comment
не только в ответ, несколько вопросов с разными радиогруппами, я хочу записать вот так: ответ с идентификатором опроса и идентификатором вопроса, например, у меня есть опрос с 2 вопросами, которые я хочу иметь в моей базе данных 2 строки, одинаковый идентификатор опроса и question_id - это вопрос идентификатор и идентификатор опроса - person Salem loress; 17.08.2019