将两个变量组合在一个循环中

时间:2018-10-19 22:48:40

标签: laravel loops

您好,我有两种模型,一种用于提问,另一种用于答案 我需要从问题中获取所有信息 并从答案 然后在下方显示每个问题和答案

问题在于它们在两个不同的表中,因此您必须将每个表存储在一个变量中 现在你必须变 当您尝试通过每个循环显示它们时,它们将重复 我需要将两个变量合并为一个的方法 或在两个变量之间为每个循环做一个 我正在使用laravel

控制器

public function answerdquestions()


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

查看

    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 :(得分:0)

问题和答案之间是否存在1:1关系,并且它们的顺序相同?在这种情况下,您应该使用toArray()(检查here)将数组中的集合转换为数组,然后使用foreach按键和值循环数组。所以你有

  

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

然后您将使用以下方法得到答案:

  

$ A [$ key]-> answer

但是最好使用数字标识符表示问题和答案,然后通过使用问题-> id并使用它来获取答案来检索ID。

答案 1 :(得分:0)

我已经尝试了各种方法来成功建立1:1关系,但对我却没有用,所以我通过在答案表的迁移中添加一列来手动创建它 Question_ID 然后我进入了已经提交了问题ID的答案提交表单,并添加了一个带有hide类的输入,并将其值设置为$ question-> id

然后我只用键复制了您的soloution循环,就很好了

管理商店功能

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