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

펼침메뉴 구현중에 포스트 작성자를 위해 posts 테이블과 users 을 아래와 같이 일대다 관계로 relationship 했습니다

post모델

public function user()

{
return $this->belongsTo('App\User');
}

user모델

public function posts()
{
return $this->hasMany('App\Post');
}


그후 컨트롤러에서 아래와같이 데이터를 변수에 넣고 뷰에 넘겨주는데 제목과 같이 에러가나는데

public function show($id)
{
$id = \App\Post::where('id',$id)->first();
$auth = \App\Post::find($id)->user;
return view('posts.show',['id'=>$id,'auth'=>$auth]);
}


$auth << 이 부분을 없에고 테스트를 해보면 실행이 잘되서 문제가 되는 부분은 이부분이고

user() 메소드가 없다는걸 보니 관계쪽에서 문제가생기는것같은데 저는 아무리 봐도 문제점이 안보이거든요,,,

왜이런 에러가 나오는 걸까요?? 조언좀 부탁드립니다

$auth = \App\Post::find($id)->user()→get(); 이렇게 바꾸면 에러가

Method user does not exist. 이러니 관계에서 잘못된것같습니다,,, 

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      show method에서

      $id = \App\Post::where('id',$id)->first();

      이 부분은 Post 모델의 인스턴스를 $id에 할당을 하고(그래서 $id의 값이 한번 바뀌죠),

      그 인스턴스를 아랫줄에

      $auth = \App\Post::find($id)와 같이 넣어주고 있는데요.


      $id라는 변수 자체는 그대로 두고 이리저리 시도해보시면 어떨까요?

      show method 안에 첫 줄을 지우고 $auth = \App\Post::find($id)->user; 이 부분만 넣어보면 말이죠.


      1. 최윤석

        감사합니다 !! 힌트주셔서 해결했습니다!!

        변수를 따로 만들어서 사용하면 오류가 안났어요 

      CommentAdd your comment...