질문을 삭제하지 말아주세요.!
 
1
0
-1

controller에서


$post = \App\Post::where('id',$id)→get(); 

return view('메인')→with('post',$post);

이런식으로 블레이드에 전달한뒤에


@if($post)

  글이 있음

@else

 글이 없음

@endif


이렇게 표현하고자 하는데

$post 변수에 값이 없는데도 불구하고

글이 있음 이 나타나고있습니다


empty 은 그반대로 나오고 isset (array) (object) 등등 해봤지만 제가 뜻하는대로 표시되지않아서 질문드려요 ,,

초보적인 질문이지만 어떤 부분을 공부해야지 파악이 될까요 ㅠㅠ?


var_dump 로 찍어보면 object로 나옵니다 조언좀 부탁드려요



    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      Collection(목록)을 가져오시는 경우인듯 한데

      그런경우를 위해 라라벨이 친절하게 아래와 같은 태그를 지원합니다

      @forelse ($posts as $post)
          <li>{{ $post->title }}</li>
      @empty
          <p>포스트가 없습니다</p>
      @endforelse


      아 잘못봤네요. 목록을 조회하시는게 아니군요...

      위 함수부터 수정하시면 일반 if문으로 걸러집니다

      지금처럼 조회하시면 collection목록으로 받아와지기 때문에 항상 if가 true 이구요

      $post = \App\Post::where('id',$id)→get(); 


      이렇게 쓰셔야 있으면 model, 없으면 null이 리턴되서 if문에 걸립니다

      $post = \App\Post::find($id); 

      https://laravel.kr/docs/5.6/eloquent#retrieving-single-models

      1. getahead92

        find 말고 get 를 쓰면서 null이 걸리는 방법은 없을까요 ?? 

      2. Darron

        그러면 컬렉션의 isNotEmpty()를 쓰시면 됩니다

        @if($post->isNotEmpty())
          글이 있음
        @else
         글이 없음
        @endif


        https://laravel.kr/docs/5.6/collections#method-isnotempty

      3. getahead92

        감사합니다 !! 정말 도움이 많이 됬습니다 

      CommentAdd your comment...
    2.  
      1
      0
      -1

      empty 와 isset 사용방법을 다시 공부 추천해 드리며 object 로 나온다면 object 상세하게 찍어보시는게 좋은 방법입니다 말씀하시는 내용은 함수의 쓰임을 예제로 잘 공부해 보시면 알 수 있습니다 

      참고 https://www.virendrachandak.com/techtalk/php-isset-vs-empty-vs-is_null/

        CommentAdd your comment...