从laravel方法显示一些视图

时间:2019-06-15 18:01:33

标签: laravel

我想显示我的内容,但什么也没显示


public function myMethod(Request $request)
{
    $this->showQuestion()
}





public function showQuestion($tester, $testerAnswers, $user)
    {
        $testerAnswerNum = $testerAnswers->count();

        $questionIdsAnswered = $testerAnswers->pluck('question_id');
        $question = UserAnswer::where("user_id", $tester->user_id)->whereNotIn('question_id', $questionIdsAnswered)->orderBy("created_at", "desc")->first();


        $question->question->items;

        $questionNum = UserAnswer::where("user_id", $tester->user_id)->count();
        $userName = $user->name;


        return view('create_answer.answer_a_question', compact('question', 'testerAnswerNum', 'questionNum', 'userName'));
    }

和我的查看文件(create_answer.answer_a_question.blade.php):

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>پاسخ به سوالات</title>

    <style>
        .item:hover{
            background: #8BC34A;
        }


        .item{
            background: #eeeeee;
            float: right;
            width: 40%;
            margin: 10px;
            max-width: 200px;
        }
        button {
            background-color: Transparent;
            background-repeat:no-repeat;
            border: none;
            cursor:pointer;
            overflow: hidden;
            outline:none;
        }
        p{
            text-align: center;
            margin: 10px;
        }
        img{
            max-width: 150px;
            max-height: 150px;
            display: block;
            margin-left: 0.1px;

        }

        button.selected{
            background:red;
        }
    </style>
</head>
<body>




<p>{{$testerAnswerNum+1}}/$questionNum}}</p>

<p>{{$userName." ".$question->tester_question_text}}</p>





@for($i=0;$i<sizeof($question->items);$i++)
    @php

        $item=$question->items[$i];

    @endphp
    <div class="item border border-secondary rounded" onclick="redirect('{{$item->id}}')" >
        <img  class="img-fluid" src="{{{$item->image}}}" alt="">
        <p class="d">{{$item->item_text}}</p>
    </div>

@endfor
<hr >
<br>
<br>
<button onclick="reload()"  style="background: #ffff;color: #3f9ae5;size: 10px;text-align: center">یک سوال دیگر</button>

<form  id="form" action="{{route('store_question')}}" method="post">
    @csrf
    <input  type="hidden" name="user_id" value="{{$user->id}}">
    <input  type="hidden" name="question_id" value="{{$question->id}}">
    <input  type="hidden" id="item_id" name="item_id"  >

</form>


</body>
</html>

和我的UserAnswer文件:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class UserAnswer extends Model
{


    public function question()
    {
        return $this->belongsTo(question::class);
    }

}

我的问题模型:


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class question extends Model
{


    public function items()
    {
        return $this->hasMany(Item::class);
    }
}

2 个答案:

答案 0 :(得分:3)

您正试图“跳过” question关系以获得items

因此,只需从一个“未回答的答案”中选择question_id,然后使用with('items')来提问。

还不清楚您如何获得$tester, $testerAnswers, $user

以下是解决问题的想法:

操作:

public function showQuestion($tester, $testerAnswers, $user)
{
    $testerAnswerNum = $testerAnswers->count();

    $questionIdsAnswered = $testerAnswers->pluck('question_id');
    $unansweredOne = UserAnswer::where("user_id", $tester->user_id)
                               ->whereNotIn('question_id', $questionIdsAnswered)
                               ->orderBy("created_at", "desc")
                               ->first(['question_id']);

    $question = question::with('items')->find($unansweredOne->question_id);

    $questionNum = UserAnswer::where("user_id", $tester->user_id)->count();
    $userName = $user->name;


    return view('answers.answer_a_question', compact('question', 'testerAnswerNum', 'questionNum', 'userName'));
}

public function myMethod(Request $request) 
{ 
    /* 
      here You get:
        $tester
        $testerAnswers
        $user
      to pass them as arguments of
      method on next line
    */
    return $this->showQuestion($tester, $testerAnswers, $user);
} 

查看:

@foreach($question->items AS $item)

    <div class="item border border-secondary rounded" onclick="redirect('{{$item->id}}')" >
        <img  class="img-fluid" src="{{{$item->image}}}" alt="">
        <p class="d">{{$item->item_text}}</p>
    </div>

@endforeach

还更改文件名
来自:create_answer.answer_a_question.blade.php
到:answer_a_question.blade.php
并将其放在文件夹resources/views/answers/中(如果不存在则创建它)
请记住laravel view助手.(点)表示/(目录分隔符)。

答案 1 :(得分:-1)

我发现了问题!您正在调用该函数,但未返回任何内容。

在上一期中,showQuestion()myMethod()的{​​{1}}方法返回视图不使用它,它将与myMethod()中的add return一起使用,如下所示:< / p>

myMethod()

应更改为:

public function myMethod(Request $request)
{
    $this->showQuestion()
}