添加对象详细信息 table 以推进
Adding object details table to propel
我正在尝试从我自己的伪 ORM 转移到使用 Propel(因为我以前的代码实际上是 Active Record)并且努力寻找 'best' 方法来解决 class由可变属性和固定属性组成的es。
它适用于我在地图上有区域的游戏,可以在整个游戏过程中更改所有者,所以我需要存储游戏 ID(因为可以同时进行多个游戏)和区域的当前所有者table,但我还需要参考地区名称,是否可以在那里招募,首发所有者等;所有这些在该地区都是固定的,不会在游戏内或游戏之间改变。
例如,区域 'Kent' 最初可能由英国人拥有,但可能被法国人占领,但它始终被称为 'Kent',您可以随时在那里招募,它始终是一部分较大的国家 'England'.
我可以看到的选项是:
- 查找 .ini 文件或数据库 table 不受 Propel 控制
并将名称等作为主要区域的字段 table
- 在区域 table
上有一个 'details' table 和一个 'details_id' 作为字段
- 使用 'details' 硬编码为每个区域创建一个 class(尽管这对我来说似乎难以维护和错误检查)
- 我还没有想到的东西'better'
这一定是一个标准问题,我为没有正确使用搜索词而道歉,但我已经断断续续地努力了一段时间,无法直观地解决问题![=13= ]
应要求澄清我的数据库结构-
区域table
id | game_id | owner | turn_last_conquered | details_id | population
----|---------|-------|---------------------|------------|-----------
1 | 100 |England| 2 | 1 | 10
2 | 101 | France| 3 | 1 | 12
地区详情table
id | name | port | fortified | starting owner | starting population
----|------|------|-----------|----------------|--------------------
1 | Kent | 1 | 0 | England | 13
区域table中的两个条目都对应不同游戏中的肯特。如果我将属性作为区域 object/table 的一部分,那么如果我想在每个游戏中更改某些内容的名称,我必须更新所有受影响的行,而如果它在单独的 table 然后我只需要更新那个,更改就会传播。我自己的系统使用 Propel 填充了 Region 对象,我试图找到一种方法来拥有 'RegionDetails' 对象,但也许我不应该这样做。
如果你打算使用多个 tables,并且你打算使用 Propel(或其他一些 Active Record 库),你将必须有一个 class 每个 table。这几乎就是 Active Record 的定义。数据库中每行一个对象,每个 table.
一个 class
我正在尝试从我自己的伪 ORM 转移到使用 Propel(因为我以前的代码实际上是 Active Record)并且努力寻找 'best' 方法来解决 class由可变属性和固定属性组成的es。
它适用于我在地图上有区域的游戏,可以在整个游戏过程中更改所有者,所以我需要存储游戏 ID(因为可以同时进行多个游戏)和区域的当前所有者table,但我还需要参考地区名称,是否可以在那里招募,首发所有者等;所有这些在该地区都是固定的,不会在游戏内或游戏之间改变。
例如,区域 'Kent' 最初可能由英国人拥有,但可能被法国人占领,但它始终被称为 'Kent',您可以随时在那里招募,它始终是一部分较大的国家 'England'.
我可以看到的选项是:
- 查找 .ini 文件或数据库 table 不受 Propel 控制 并将名称等作为主要区域的字段 table
- 在区域 table 上有一个 'details' table 和一个 'details_id' 作为字段
- 使用 'details' 硬编码为每个区域创建一个 class(尽管这对我来说似乎难以维护和错误检查)
- 我还没有想到的东西'better'
这一定是一个标准问题,我为没有正确使用搜索词而道歉,但我已经断断续续地努力了一段时间,无法直观地解决问题![=13= ]
应要求澄清我的数据库结构-
区域table
id | game_id | owner | turn_last_conquered | details_id | population
----|---------|-------|---------------------|------------|-----------
1 | 100 |England| 2 | 1 | 10
2 | 101 | France| 3 | 1 | 12
地区详情table
id | name | port | fortified | starting owner | starting population
----|------|------|-----------|----------------|--------------------
1 | Kent | 1 | 0 | England | 13
区域table中的两个条目都对应不同游戏中的肯特。如果我将属性作为区域 object/table 的一部分,那么如果我想在每个游戏中更改某些内容的名称,我必须更新所有受影响的行,而如果它在单独的 table 然后我只需要更新那个,更改就会传播。我自己的系统使用 Propel 填充了 Region 对象,我试图找到一种方法来拥有 'RegionDetails' 对象,但也许我不应该这样做。
如果你打算使用多个 tables,并且你打算使用 Propel(或其他一些 Active Record 库),你将必须有一个 class 每个 table。这几乎就是 Active Record 的定义。数据库中每行一个对象,每个 table.
一个 class