Database 将模型与其他两个模型之间的M:M关系关联

Database 将模型与其他两个模型之间的M:M关系关联,database,laravel,data-structures,data-modeling,Database,Laravel,Data Structures,Data Modeling,我正在为一款帮助教授语言的游戏修改我的数据模型,使用Laravel5.1作为API。我的目标是允许用户单击地图(假设他们单击中国),然后选择该国家的地区(假设普通话),然后加载与该国家和地区相关的所有级别 注释: 我不能将多个地区与一个国家关联,因为多个国家共享同一地区 我不能将多个国家与一个地区相关联,因为每个国家都有多个地区 我可能想为多个地区重用一个地图(中文1级)(因此我不需要重做地图,只需在新对话框中加载) 所以我的想法是创建一个名为GameLocal的新M:M模型和名为game\

我正在为一款帮助教授语言的游戏修改我的数据模型,使用
Laravel5.1
作为API。我的目标是允许用户单击地图(假设他们单击
中国
),然后选择该国家的地区(假设
普通话
),然后加载与该国家和地区相关的所有级别

注释

  • 我不能将多个地区与一个国家关联,因为多个国家共享同一地区

  • 我不能将多个国家与一个地区相关联,因为每个国家都有多个地区

  • 我可能想为多个地区重用一个地图(中文1级)(因此我不需要重做地图,只需在新对话框中加载)

所以我的想法是创建一个名为
GameLocal
的新M:M模型和名为
game\u locale\u level
的表,这样我就可以通过ID将多个级别连接到多个game\u locale。那么我如何实现这个数据模型结构呢


游戏区域设置表:

- When I load a game (China), choose which locale to load (Mandarin)
    - ID 1 - Game: 1 (China) — locale: 1 (Mandarin)
    - ID 2 - Game: 1 (China) — locale: 2 (Cantonese)
    - ID 3 - Game: 2 (Taiwan) — locale: 1 (Mandarin)

- Load all levels that are associated where game ID = x and locale ID = y
游戏\区域设置\级别表:

- Make a new M:M table: game_locale_level: game_locale_id, level_id which 
  references the above 

    - game_locale_id: 1 (China - Mandarin) - level: 1 (Chinese level 1)  
    - game_locale_id: 1 (China - Mandarin) - level: 2 (Chinese level 2)
    - game_locale_id: 2 (China - Cantonese) - level: 1 (Chinese level 1)

更新:我认为
Laravel 5.4
可能有我想要的,但我需要升级::

如果要定义一个自定义模型来表示 在关系的中间表中,可以调用using方法 定义关系时。用于表示的所有自定义模型 中间关系表必须扩展 照亮\数据库\雄辩\关系\透视类


<?php

namespace App;

use Illuminate\Database\Eloquent\Relations\Pivot;

class Role extends Pivot
{
    /**
     * The users that belong to the role.
     */
    public function users()
    {
        return $this->belongsToMany('App\User')->using('App\UserRole');
    }
}