我有一个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()
可能是适用的地方。