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

안녕하세요. 라라벨도 초보 php도 초보 개발자입니다. 

라라벨을 공부하면서 프로젝트를 진행중인데요. 진행중에 궁금한 점이 생겨서 질문드립니다. 

controller::

 public function show($id){

$myVars=\App\User::get();
//$myVars="[]";
//$myVars="[{\"id\":1,\"name\":\"john doe\"},{\"id\":1,\"name\":\"john doe\"}]";
return view('myVarsTest',compact('myVars'));

}


myVarsTest.blade.php

@forelse($myVarsas $myVar)

<li>
{{ $myVar}}
</li>
@empty
<h2>데이터가 없습니다. </h2>
@endforelse


위와 같이 작성을 해보았는데요. 

주석처리가 되지 않은 디비에서 get()을 해서 $myVars를 셋팅후 compact로 넘기는 것과 주석처리된부분처럼 

하드 코딩을 해서 넘기는 것에서 어떤 차이가 있나요? 

주석 처리된 부분은 argument Error가 나는데요.  데이터를 찍어보면 두개의 차이는 없거든요? 

어떤 차이로 에러가 나고 안나는지가 알고 싶습니다. 

고수님들의 답변 부탁드립니다. 

감사합니다. 


    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      주석이 해제되어있는 첫번째 $myVars 는 User Model 에 쿼리를 전부 Array 형식으로 가져옵니다.

      주석이 되어있는 $myVars 변수는 String 형입니다.

      블레이드 템플릿에서 foreach(forelse) 는 배열을 풀어쓸때 사용합니다.


      결과가 궁금하시다면 라라벨 디버깅 함수인 dd() 를 이용해 어떤 결과가 나오는지 보신다면 이해가 쉬우실거에요.

      1. 신덕환

        아..array형태와 문자열의 차이였군요. 

        전 프린트했을때 형태가 같아서 같은 거라고 생각했습니다. 

        답변에 감사드립니다. 

      CommentAdd your comment...