簡體   English   中英

laravel find()返回空刀片文件時返回錯誤

[英]laravel find() when return null blade file return error

當模型不為null時,我嘗試將模型傳遞給view.blade,刀片文件運行沒有錯誤,但是如果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>

當然,這是一個錯誤,因為您嘗試訪問非對象上的屬性。 您的數組將具有一個null元素。

這是一個糟糕的設計,因為如果學生不存在,則不應返回該視圖。 您應該拋出一些錯誤,可能是HTTP 404。

幸運的是,Laravel使這變得容易。 您可以使用Student::findOrFail($id); 在學生不存在時引發異常。


對於我來說,奇怪的是,當控制器僅返回一名學生時,您正在視圖中瀏覽學生。 如果由於某種原因您不希望使用404,則可以始終通過array_filter運行$ outputs以擺脫null值,或者僅在它為null時不將其添加到$ outputs中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM