我尝试将模型传递给view.blade 当模型不为null时,刀片文件运行无错误 但是如果model为null,则刀片文件运行错误 这是我的代码
//StudentController code
public function viewstudent($id)
{
$student = Student::find($id);
$outputs = array($student);
return view('student',['students'=>$outputs]);
}
//student.blade.php code
<table id="myTable">
@foreach ($students as $student)
<tr>
<td>{{$student->studentname}}</td>
<td>{{$student->studentlevel}}</td>
<td>{{$student->studentgender === 1 ?'Male':'Female'}}</td>
<td>{{$student->studentbirthdate}}</td>
<td>{{$student->studentnotes}}</td>
<td>{{$student->created_at}}</td>
<td>{{$student->updated_at}}</td>
</tr>
@endforeach
</table>
答案 0 :(得分:4)
当然这是一个错误,因为您正在尝试访问非对象上的属性。您的数组将包含null
的一个元素。
这是一个错误的设计,因为如果该学生不存在,则不应返回该视图。您应该抛出一些错误,可能是HTTP 404。
幸运的是,Laravel使这变得容易。当学生不存在时,您可以使用Student::findOrFail($id);
引发异常。
对于我来说,奇怪的是,当控制器仅返回一名学生时,您正在视图中浏览学生。如果由于某种原因您不希望使用404,则可以始终通过array_filter运行$ outputs以摆脱null值,或者不将其添加到$ outputs中则为null。