Laravel 5 - 查询数据库中的多个关联表

时间:2015-12-19 03:10:23

标签: php mysql laravel laravel-5

说明

<小时/> 我正在开发一个数据库设置,要求我使用多个关联表,并且我想知道关联表如何在Laravel中工作,同时利用Eloquent Relationships。

我有一个包含足球比赛的数据集。我需要为游戏存储玩家,游戏和特定玩家信息。所以我的结构看起来应该是这样的:

Player Table:
+------------+---------+
| id         | integer |
+------------+---------+
| name       | string  |
+------------+---------+
| team       | string  |
+------------+---------+
| country    | string  |
+------------+---------+
| average    | string  |
+------------+---------+
| updated_at | Date    |
+------------+---------+
| created_at | Date    |
+------------+---------+

Game Table
+--------------+---------+
| id           | integer |
+--------------+---------+
| name         | string  |
+--------------+---------+
| country      | string  |
+--------------+---------+
| tournament   | string  |
+--------------+---------+
| score        | string  |
+--------------+---------+
| started_at   | Date    |
+--------------+---------+
| ended_at     | Date    |
+--------------+---------+
| updated_at   | Date    |
+--------------+---------+
| published_at | Date    |
+--------------+---------+

问题在于我需要一张表将两者合并为一个玩家可以有很多游戏游戏有很多玩家

<小时/>

问题:

我如何构建我的代码?

  • 我是否写了一个player_game模型?
  • 我是否以不同于常规的方式存储关联,因为这是Laravel?

直观地说,我想写一个player_game迁移,其中包含玩家的游戏特定信息。但是,如何使用Laravel 5和hasMany()属性?

2 个答案:

答案 0 :(得分:1)

遵循直觉。你说对了,你要找的是Many to Many Relationship

创建中间表,然后您可以使用不同的查询,如果Laravel HasMany类型方法不能满足您的需求,您可以随时直接查询中间表。

答案 1 :(得分:1)

您需要创建名为game_player many to many relationship的数据透视表。您可以将游戏特定信息存储在此表中。

游戏模型中的关系,

public funtion players()
{ 
    return $this->hasMany('Player');
}

从数据透视表中访问游戏特定信息

foreach ($game->player as $player)
{
    echo $player->pivot->created_at;
}
相关问题