我正在使用Laravel 5.1
为API修改有助于教授语言的游戏的数据模型。我的目标是允许用户点击地图(假设他们点击China
),然后选择该国家/地区的区域设置(假设Mandarin
),然后选择与该国家/地区相关联的所有级别将被加载。
备注:
我不能将多个区域设置关联到一个国家/地区,因为多个国家/地区共享相同的区域设置。
我无法将多个国家/地区关联到一个区域设置,因为每个国家/地区都有多个区域设置
我可能想要为多个语言环境重用地图(中文1级)(所以我不需要重做地图,只需加载新对话框)
所以我的想法是创建一个名为GameLocal
的新M:M模型和名为game_locale_level
的表,这样我就可以通过ID将多个级别连接到多个game_locales。 But I know M:M
models are a no-no。那么如何实现这种数据模型结构?
Game_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
Game_Locale_Level表:
- 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
可能有我想要的,但我需要升级:Defining Custom Intermediate Table Models:
如果您想定义一个自定义模型来表示 您的关系的中间表,您可以调用using方法 在定义关系时。用于表示的所有自定义模型 中间关系表必须扩展 照亮\数据库\ Eloquent \ Relations \ Pivot类
<?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');
}
}