雄辩的Laravel关系

时间:2014-05-21 14:07:04

标签: laravel eloquent

我有2个表1,称为俱乐部和1个团队 这就是他们的样子

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

clubs:
id   ||    name     ||    img_url    ||
---------------------------------------
1          Team1          .....
2          Team2          .......

现在我想建立一个关系,这样我就可以通过home_id和away_id得到俱乐部名称

2 个答案:

答案 0 :(得分:0)

匹配模型:

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

答案 1 :(得分:0)

这似乎是一个不完整的解决方案。你永远不会找到那些作为客队效力的俱乐部。事实上,俱乐部不仅应该基于home_id而且还要基于away_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));