Trying to get property 'id' of non-object () 해결 방법

Laravel 입문 (p.208)에서 쿼리 빌더를 사용하여 지정한 ID의 레코드를 검색하고 브라우저를 표시하려고 할 때 다음 오류가 발생했습니다.
Trying to get property 'id' of non-object (View: /work/resources/views/hello/show.blade.php)



이 오류는 存在しないプロパティを取得しようとする로 발생합니다.
결론에서 말하면,이 오류의 원인은/hello/show에 액세스 할 때,
단지 ?id=1 와 같이 파라미터를 준비하고 있지 않았기 때문이었습니다 (웃음)
그냥 참고서를 놓쳤습니다.

그러나, 에러에 대해서 조사하고 있으면(자), 아무래도 릴레이션의 끝이 없었을 경우에 null를 돌려주는 함수가 있는 것 같고,
그 함수를 사용하는 것으로 이번의 에러를 해결할 수 있는 것 같기 때문에 시험에 사용해 보았습니다.

optional( )



그 기능이 여기입니다!
이 함수는 헬퍼 함수라고 하며, 전달된 객체에 대해 is_object가 참이면 객체와 속성을 전달하고 null이면 예외를 피할 수 있습니다.

그렇다면 조속히 아래와 같이 테이블 표시의 기술을 수정하여/hello/show에 액세스 해 보겠습니다.

"show.blade.php"
@section('content')
    <table>
        <tr><th>id: </th><td>{{$item->id}}</td></tr>
        <tr><th>name: </th><td>{{$item->name}}</td></tr>
        <tr><th>mail: </th><td>{{$item->mail}}</td></tr>
        <tr><th>age: </th><td>{{$item->age}}</td></tr>
    </table>
    </item>
@endsection

↓ //optional関数追加

@section('content')
    <table>
        <tr><th>id: </th><td>{{optional($item)->id}}</td></tr>
        <tr><th>name: </th><td>{{optional($item)->name}}</td></tr>
        <tr><th>mail: </th><td>{{optional($item)->mail}}</td></tr>
        <tr><th>age: </th><td>{{optional($item)->age}}</td></tr>
    </table>
    </item>
@endsection

이제 매개 변수를 다시 사용하지 않고/hello/show에 액세스하려고합니다.



그러면 보시다시피 레코드가 없어도 null 상태로 테이블 표시되었습니다.

그럼, 다음은 제대로 파라미터를 준비해 /hello/show?id=2 로 액세스 해 보겠습니다.


그러면 id가 2인 레코드가 제대로 표시되었습니다!

참고 사이트는 이쪽
htps : // ぉl-k. 이 m/wp2/bぉg/2018/12/19/포 st-992/
htps // // 고양이. 사쿠라탄. 코 m / ぁらゔぇl-20190909 /

좋은 웹페이지 즐겨찾기