Yii多个表的一个关系

Ion*_*ian 5 php yii

我正在尝试编写一个使用多个表的自定义关系,这种关系需要使用第一个表中的键连接到其他表.

每个表都有相同的列.

所以,让故事开始:

我正在开发一个基于在线策略的游戏.(PBBG - 基于持续浏览器的游戏)

我有一个大表(30.000.000行),我将该表拆分为100个较小的表(每个表中300.000行).

行动发生在村庄内.

有关村庄的详细信息存储在village表格中.

每个村庄都位于一个大陆内,所以有k一些村庄给我这个村庄所属的大陆.

村表包含以下列:

id - pk x - x在地图上的位置y - y在地图上的位置k - fk continent id name user_id fk points

我有100大洲,这就是为什么我有100个新的小桌子.

我还有一张桌子,用于存储所有建筑物的详细信息.

建筑细节存储在village_building表格中.

所以,从原来的表village_building,我现在village_building_k1,village_building_k2..., village_building_k100.

一个village_building_k...表有以下几列:

id - pk village_id - fk building_id - fk

现在,我尝试写从模型跳跃的关系village进行建模village_building_kX,其中X需要的时候应该改变.

如果我可以使用k模型中的值village,那将为我提供我需要加入的表的名称.

如果k = 2,我需要跳转villagevillage_building_k2使用concat

public function tableName() {
        return 'village_building_k' . self::$k;
    }

public function relations() {
        return array(
            'relation_village_building' => array(self::HAS_MANY, 'VillageBuildingKXSlaveM', 'village_id'),
        );
    }
Run Code Online (Sandbox Code Playgroud)

$model_village->relation_village_building->building_id

gaR*_*Rex 5

您确定,您需要在框架级别解决此问题吗?我建议在这里使用像http://en.wikipedia.org/wiki/Shard_(database_architecture)这样的东西


小智 3

我认为你需要添加一些共享数据库。由于您的数据库很大,您无法通过框架来管理它。只需尝试共享数据库来管理数据库。您也可以尝试使用 mysql cluster 来管理数据库请点击此链接这可能对您有帮助。请记住,一个框架是一组函数,以便您可以使用代码和数据库等支持环境来操作您的函数。