无法让Laravel的关系奏效

时间:2015-01-23 15:22:45

标签: laravel laravel-4 eloquent relationship

我不知道今天我做错了什么,我无法在Laravel 4中找到1-N的关系。我正在尝试描述拥有众多球员的足球队。

我有一个“players.team_id”字段。我仔细检查了数据库,数据还可以。

第一个模型:

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

第二种模式:

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

在我的控制器中,我可以使用$ player->团队,但$ team->玩家总是重新调整null。

如果我尝试使用var_dump $ team-> players()(我应该看到关系描述),它会返回错误:

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

这就是我的控制器的样子:

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);
    }
}

任何线索?非常感谢你!

1 个答案:

答案 0 :(得分:1)

感谢Quasdunk评论,我发现了这个错误。

composer dump-auto 

告诉我,我有两次“团队”课程。

Warning: Ambiguous class resolution

我复制/粘贴了一个模型文件,忘了更改其中的类名。我重命名这个课后问题就解决了。