Laravel 雄辩的拉威尔关系

Laravel 雄辩的拉威尔关系,laravel,eloquent,Laravel,Eloquent,我有两张桌子,一张叫做俱乐部,一张是球队 这就是他们的样子 matches: id || home_id || away_id || -------------------------------------- 1 2 1 clubs: id || name || img_url || --------------------------------------- 1 Team1

我有两张桌子,一张叫做俱乐部,一张是球队 这就是他们的样子

matches:
id   ||   home_id   ||    away_id   ||
--------------------------------------
1         2               1

clubs:
id   ||    name     ||    img_url    ||
---------------------------------------
1          Team1          .....
2          Team2          .......
现在我想建立一个关系,这样我就可以通过主场id和客场id获得俱乐部名称

比赛模型:

public function club() { return $this->belongsTo('Match', 'home_id'); }
俱乐部模式:

public function match() { return $this->hasMany('Club', 'home_id'); }
查询:

$match = Match::with('club')->find(1);
转储名称:

dd($match->club->name);

这似乎是一个不完整的解决方案。你永远也找不到像客队那样踢球的俱乐部。事实上,俱乐部不仅应该根据主场id,还应该根据客场id归属于比赛

public function clubhome() { return $this->belongsTo('Match', 'home_id'); }
public function clubaway() { return $this->belongsTo('Match', 'away_id'); }
在您的控制器/路由器中,您可以将这些连接到单个阵列中,以返回完整的列表

我知道这很混乱,但我正在处理完全相同的问题,这是我能想到的唯一解决方案:

    //works: http://localhost:8080/match/4/clubs
    $one = Match::find($id)->clubhome();
    $two = Match::find($id)->clubaway();
    return Response::json(array($one,$two));

你看过文件了吗?您尝试了什么?我已经阅读了文档,但我不确定应该使用哪种关系
匹配
表将与
俱乐部
建立
belongsTo
关系,而
俱乐部
表将与
匹配
建立
关系。