我只是想知道为什么我的代码不起作用,我的意思是,在我使用预先加载收集单个数据之后,如果我收集嵌套关系,它会返回错误。请参阅下面的代码。
错误
尝试获取非对象的属性
我的代码
Controller.php这样
$ex = Exam::with('answers', 'child.answers')->find($id);
$exam = collect($ex->answers);
$exams = $exam->merge(collect($ex->child->answers));
return view('school.exam.view', compact('exams'));
view.blade.php
@foreach($exams as $exam)
<li>{{ $exam->name }}</li>
@endforeach
我该怎么办?
答案 0 :(得分:0)
因为这行
$ exam = collect($ exam-&gt; answers);
也许你想要这个
$ quizzes = collect($ exam-&gt; answers);
编辑:
这是因为$exam->child
是一个集合。你需要遍历每个孩子并获得答案。为清晰起见,您还应该将关系命名为childs
。
$ex = Exam::with('answers', 'childs.answers')->find($id);
$exam = collect($ex->answers);
foreach(collect($ex->childs) as $child) {
$exams = $exam->merge(collect($child->answers));
}
return view('school.exam.view', compact('exams'));