2015-01-23 7 views
0

오늘 내가 무엇을 잘못하고 있는지 알지 못하고 Laravel 4에서 1-N 관계를 유지할 수 없습니다. 많은 선수가있는 축구 팀을 설명하려고합니다. .Laravel 관계가 작동하지 않을 수 있습니다.

나는 "players.team_id"필드가 있습니다. 데이터베이스를 두 번 확인했는데 데이터는 괜찮습니다.

첫 번째 모델 :

class Team extends Eloquent { 
    public function players() { 
     return $this->hasMany('Player'); 
    } 
} 

두 번째 모델 : 내 컨트롤러에서

class Player extends Eloquent { 
    function team() { 
     return $this->belongsTo('Team'); 
    } 
} 

, 나는 $ 플레이어 -> 팀 만 $ 팀 -> 플레이어 항상 null retunrs를 사용할 수 있습니다.

class HomeController extends BaseController { 
    public function showTeam($slug) { 
     $team = Team::where('slug','=',$slug)->first(); 

     // this works fine 
     $player = Player::find(1); 
     var_dump($player->team); 

     // this works, too. 
     $players = Player::where('team_id','=',516)->get(); 
     var_dump($players); 

     $team = Team::where('slug','=',$slug)->first(); 
     var_dump($team->players); // returns null 
     var_dump($team->players()); // throws an error 

     return View::make('team') 
      ->with('team', $team); 
    } 
} 
:

Call to undefined method Illuminate\Database\Query\Builder::players() 

이 내 컨트롤러는 모습입니다 : 나는 (내가 관계 설명을 참조한다)) $ 팀 -> 플레이어 (위해서 var_dump하려고하면

, 그것은 오류를 반환

모든 리드? 고마워요!

+0

'hasMany'가 아니라'belongsToMany'가 필요합니다. –

+0

제가 실제로 사용하고있는 것이고, 저는 질문을 업데이트했습니다. –

+0

컨트롤러 코드를 알려주십시오. –

답변

1

Quasdunk 주석 덕분에 버그가 발견되었습니다.

composer dump-auto 

"Team"클래스의 두 배가 있다고 말해 줬어.

Warning: Ambiguous class resolution 

모델 파일을 복사/붙여 넣기하고 클래스 이름을 변경하는 것을 잊어 버렸습니다. 이 클래스의 이름을 변경하면 문제가 해결되었습니다.

관련 문제