我正在进行一项测验。下面是一个方法,我试图得到一个可以在in_array
函数中运行的数组:
public function mcq($id)
{
$questions = Chapter::find($id)->questions()->inRandomOrder()->limit(1)->first();
$question_check = TestsResultsAnswer::where('user_id', auth::id())->pluck('question_id')->toArray();
$sponsors = Sponsor::All();
return view('pages.mcq', compact('questions', 'sponsors', 'question_check'));
}
下面是使用question_check
函数传递in_array
变量的刀片代码:
@foreach ($questions as $key => $question)
@if(in_array($key, $question_check))
{{'Question Already Attempted'}}
@endif
@endforeach
但我收到以下错误:
(2/2) ErrorException
Trying to get property of non-object (View: E:\xampp\htdocs\laravel\lea\resources\views\pages\mcq.blade.php)
我的目标是检查是否已经尝试过问题然后打印一些东西。请帮我解决这个问题。
答案 0 :(得分:0)
使用first()
将返回模型,而不是集合,因此您无法循环访问。使用get()
将结果作为集合获取。
I.e:而不是这个
$questions = Chapter::find($id)->questions()->inRandomOrder()->limit(1)->first();
这样做
$questions = Chapter::find($id)->questions()->inRandomOrder()->limit(1)->get();
这应该可以解决您当前的问题。
考虑到这一点,
我的目标是检查是否已经尝试过问题然后打印一些东西。
我认为这是你真正想做的事。
在控制器
中$questions = Chapter::find($id)->questions()->inRandomOrder()->get()
在刀片中
@foreach ($questions as $question)
@if(in_array($question->id, $question_check))
{{'Question Already Attempted'}}
@endif
@endforeach