在 php 中使用一个 json 更新多个 mysql 表


Update multiple mysql tables with one json in php

我有一个AngularJS前端,但在与数据层有关时遇到了一些问题。

在前端,我有联系人。

联系人JSON对象:

  {
    "id": 1,
    "groupId": 1,
    "firstName": "John",
    "lastName": "Doe",
    "email": "jd@gmail.com",
    "company": "Google",
    "info": "lorem ipsum dolor amet",
    "numbers": [
      {
        "typeId": 1,
        "number": "123456"
      },
      {
        "typeId": 2,
        "number": "1234567"
      },
      {
        "typeId": 3,
        "number": "8765432"
      },
      {
        "typeId": 4,
        "number": "0864235"
      }
    ]
  }

我通过一个带有一个 http 请求的 url 获取此对象。

当我保存它时,我会将这个对象准确地返回给后端。

但是,例如,我如何使用php更新数字表中的数字或公司表中的公司?

我的同事对我说,当我更新联系人对象中的号码时,我必须调用带有 /numbers/id 的 url。但我只想放回一个"接触对象"/contacts并让业务层/数据层执行逻辑并拆分对象以更新不同的表。

在后端,他使用php和无脂肪的框架。

谁能解释一下如何做到这一点?

-编辑-

我认为如何保存数据的完整逻辑在后端。使用DTO(数据传输对象)和DAO(数据访问对象)等。

如果你想接受一个对象图,那么你需要解析它,然后对数据库进行适当的调用。

例如,假设您有一个包含"typeId"和"数字"列的表"数字",您可能希望在"联系人"类中执行类似操作的逻辑...

// convert the JSON to PHP
$request = json_decode($contact);
if(isset($request->numbers)) {
    $number = new 'DB'SQL'Mapper($this->db, "number");
    // loop over your number objects
    foreach($request->numbers as $data) {
        // create a new number entry for each one
        $number->copyfrom($data);
        $number->save();
        $number->reset();
    }
}

显然,你如何以及在何处执行此操作将取决于您如何构建代码,例如contact->post()contact->put()可能是适用的地方。