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