如何(重新)组织此数据-Lumen / Laravel

问题描述 投票:3回答:1

到目前为止,我基于Lumen的Backend-API从我的MariaDB获取以下结果:

[{
  "Internal_key": "TESTKEY_1",
  "extensiontable_itc": {
    "description": "EXTENSION_iTC_1"
  },
  "extensiontable_sysops": {
    "description": "EXTENSION_SYSOPS_1"
  }
}, {
  "Internal_key": "TESTKEY_2",
  "extensiontable_itc": {
    "description": "EXTENSION_ITC_2"
  },
  "extensiontable_sysops": {
    "description": "EXTENSION_SYSOPS_2"
  }
}, {
  "Internal_key": "TESTKEY_3",
  "extensiontable_itc": {
    "description": "EXTENSION_ITC_3"
  },
  "extensiontable_sysops": {
    "description": "EXTENSION_SYSOPS_3"
  }
}, {
  "Internal_key": "TESTKEY_4",
  "extensiontable_itc": {
    "description": "EXTENSION_ITC_4"
  },
  "extensiontable_sysops": {
    "description": "EXTENSION_SYSOPS_4"
  }
}, {
  "Internal_key": "TESTKEY_5",
  "extensiontable_itc": {
    "description": "EXTENSION_ITC_5"
  },
  "extensiontable_sysops": {
    "description": "EXTENSION_SYSOPS_5"
  }
}]

您看到的是从3个表,一个Coretable和两个extensiontables中获取数据。核心表包含“ Internal_Key”,扩展表通过其ID对其进行引用,我在模型中声明该ID为隐藏,因此当前未在fetchresults中显示。执行此提取的代码行如下所示:

$join = coretable::with($permittedTables)->get();

$permittedTables是表名的数组,因此基本上可以从coretable中获取所有数量和扩展表的组合以及引用记录。

最终应将数据插入类似列表的视图中。在此,对于每个“ Internal_key”,应创建一行,与该键关联的所有数据都将插入到该行中。

我对数据的当前结构非常满意,因为我可以随意遍历它,从而根据列表的需要提取数据。但是,我想知道是否有任何方法可以以不同的方式(重新)组织它。如果我想将扩展表中的每组数据与其各自的Internal_key放在相同的“ arraylevel”上,该怎么做?我应该更改获取数据的方式,还是应该在获取数据后重新排列数据?在两种情况下,最简单,最可靠的方法是什么?

编辑:有关数据库结构的更多信息。Coretable具有一个ID作为主键,该ID在扩展表中通过“ coretable_id” FK引用。这是我的数据库外键的架构:

+------------------------------------+-----------------------------+--------------------------------------+--------------------------+------------------------+
| TABLE_NAME                         | COLUMN_NAME                 | CONSTRAINT_NAME                      | REFERENCED_TABLE_NAME    | REFERENCED_COLUMN_NAME |
+------------------------------------+-----------------------------+--------------------------------------+--------------------------+------------------------+
| ad_usersxad_groups                 | Ad_user_id                  | fk_ad_groupxad_user                  | ad_users                 | id                     |
| ad_usersxad_groups                 | Ad_group_id                 | fk_ad_userxad_group                  | ad_groups                | id                     |
| extensiontables_registryxad_groups | ad_group_id                 | fk_ad_groupxextensiontables_registry | ad_groups                | id                     |
| extensiontables_registryxad_groups | extensiontables_registry_id | fk_extensiontables_registryxad_group | extensiontables_registry | id                     |
| extensiontable_itc                 | coretable_id                | fk_extensiontable_itc_coretable      | coretable                | id                     |
| extensiontable_sysops              | coretable_id                | fk_extensiontable_sysops_coretable   | coretable                | id                     |
| inaccessibletable                  | coretable_id                | fk_inaccessibletable_coretable       | coretable                | id                     |
+------------------------------------+-----------------------------+--------------------------------------+--------------------------+------------------------+
php laravel eloquent orm lumen
1个回答
2
投票

首先:我们没有关于coretable和extensiontables模型的信息,所以我们不知道您是否已实现Polymorphic Relationships,这很可能完全适合您的范围。

© www.soinside.com 2019 - 2024. All rights reserved.