объединить две переменные в один цикл laravel - PullRequest
0 голосов
/ 20 октября 2018

Привет, у меня есть две модели: одна для вопросов, другая для ответов. Мне нужно взять всю информацию из вопросов и ответов, затем отобразить каждый вопрос и ответы друг под другом.

Проблема в том, что онинаходятся в двух разных таблицах, поэтому вы должны хранить каждую из них в переменной, теперь вы должны переменные, когда вы пытаетесь отобразить их по каждому циклу, который они будут повторять. Мне нужен либо способ объединения двух переменных в одно, либо создание одного длякаждый цикл по двум varaibales я использую laravel, кстати

контроллер

public function answerdquestions()


 {
    $Q = question::all();
    $A = answer::all();
    return view('guest.questions.answerd',compact('Q') , compact('A'));
  }

view

    extends('layouts.guest')
@section('questions')
@if(count($Q) == null)
<h1>no Answerd questions yet</h1>
@else
  @foreach($Q as $question)
    @if($question->answerd == 1)
    @foreach($A as $answer)
    <br>
    <div class="card" style="background: linear-gradient(to right, rgb(0, 0, 
     0), rgb(67, 67, 67)); color:white;">
      <center><h3>{{$question->question}}</h3></center></div>
      <br>
      <div class="card">
        <center><h3>{{$answer->answer}}</h3></center>
      </div>
@endforeach

    @elseif($Q->answerd == 0)

    @endif
    @endforeach
    @endif
    @endsection

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Я достаточно испробовал все способы для успешного построения отношений 1: 1, но у меня это не получилось, поэтому я сделал это вручную, добавив столбец в таблицу миграции, которая представляет собой question_id, и затем я перешел к ответу.отправив форму, в которой уже передан идентификатор вопроса, и я добавил вход с классом hide и поместил его значение в виде $ question-> id

, а затем я просто скопировал ваше решение в цикл с ключом иработал отлично

функция администратора магазина

public function store_answer(Request $request , $id)
  {
    $this->validate($request,[
      'answer'=>'required',
    ]);
    $answer = new answer;
    $answer->answer = $request->input('answer');
    $answer->question_id = $request->input('question_id');
    $answer->save();
    return view('admin.questions.plus1', ['id' => $id]);
  }

форма отправки администратора

@extends('layouts.admin')
@section('content')

<div>
  <h1>{{$question->question}}</h1>
</div>
<div>
  {!! Form::model($question,['method' => 'POST','action'=>['AdminQuestionsController@store_answer','id'=>$question->id,]]) !!}
  <div class="form-group{{ $errors->has('answer') ? ' has-error' : ''}}">
    {{Form::label('Answer', 'Answer')}}
    {{Form::text('answer', '', ['class' => 'form-control required' , 'placeholder' => 'Enter your answer'])}}
  </div>
  {{Form::submit('submit',['class' => 'btn btn-primary'])}}
  <div class="form-group">
    {{Form::text('question_id', $question->id, ['class' => 'hide'])}}
  </div>
</div>
{!! Form::close() !!}

@endsection

гостевой вид

@extends('layouts.guest')
@section('questions')
@if(count($Q) == null)
<h1>no Answerd questions yet</h1>
@else
@foreach($Q as $key => $question)
    @if($question->answerd == 1)
    <br>
    <div class="card" style="background: linear-gradient(to right, rgb(0, 0, 0), rgb(67, 67, 67)); color:white;">
      <center><h3>{{$question->question}}</h3></center></div>
      <br>
      <div class="card">
        <center><h3>{{$A[$key]->answer}}</h3></center>
      </div>

@elseif($Q->answerd == 0)

@endif
@endforeach
@endif
@endsection
0 голосов
/ 20 октября 2018

Есть ли соотношение 1: 1 между вопросом и ответом, и расположены ли они в одном и том же порядке?В этом случае вы должны преобразовать коллекции в массивах, используя toArray () (отметьте здесь ), а затем зациклить массивы, используя foreach по ключу и значению.Таким образом, у вас будет

@ foreach ($ Q as $ key => $ question)

, а затем вы получите ответ, используя:

$ A [$ key] -> answer

Но было бы лучше использовать числовой идентификатор для вопросов и ответов, а затем получить идентификатор с помощью question-> id и использоватьэто, чтобы получить ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...