我想显示我的内容,但什么也没显示
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);
}
}
答案 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()
}