У меня есть AngularJS
и получил некоторые проблемы, связанные с уровнем данных.
На фронте у меня есть контакты.
контакт JSON
объект:
{
"id": 1,
"groupId": 1,
"firstName": "John",
"lastName": "Doe",
"email": "[email protected]",
"company": "Google",
"info": "lorem ipsum dolor amet",
"numbers": [
{
"typeId": 1,
"number": "123456"},
{
"typeId": 2,
"number": "1234567"},
{
"typeId": 3,
"number": "8765432"},
{
"typeId": 4,
"number": "0864235"}
]
}
Я получаю этот объект через URL с одним http-запросом.
Когда я сохраню его, я верну именно этот объект бэкэнду.
Но как я могу, например, обновить число из таблицы номеров или компанию из таблицы компаний с помощью php?
Мой коллега сказал мне, что когда я обновляю номер в контактном объекте, я должен вызвать URL с /numbers/id
,
Но я просто хочу вернуть «контактный объект» в /contacts
и пусть бизнес-уровень / уровень данных выполняет логику и разделяет объект для обновления разных таблиц.
В бэкэнде он использует php
и обезжиренные рамки.
Кто-нибудь может объяснить, как это сделать?
-РЕДАКТИРОВАТЬ-
И я подумал, что полная логика сохранения данных находится в бэкэнде.
С DTO (объект передачи данных) и DAO (объект доступа к данным) и т. Д.
Если вы хотите принять граф объектов, то вам нужно проанализировать его, а затем сделать соответствующие вызовы в базу данных.
Например, предполагая, что у вас есть таблица «numbers» со столбцами «typeId» и «number», вы, вероятно, захотите логику в своем классе «contact», который выполняет что-то вроде …
// 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()
могут быть применимыми местами.
Других решений пока нет …