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

时间:2015-03-09 09:34:15

标签: php mysql json backend fat-free-framework

我有一个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的网址。 但我只是想放回一个"联系对象"在/contacts 让业务层/数据层执行逻辑并拆分对象以更新不同的表。

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

任何人都可以解释如何做到这一点吗?

- 编辑 -

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

1 个答案:

答案 0 :(得分:0)

如果要接受对象图,则需要对其进行解析,然后对数据库进行适当的调用。

例如,假设你有一张表"数字"有列" 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()可能适用的地方。