У меня есть объект JSON, что мне нужно post
& сохранить его с помощью CakePHP 3.Сохранить JSON объекта в качестве объекта с ассоциациями с помощью CakePHP 3
Первой у меня есть 4 таблицы, как в этом образе
Скажет поставщик покупает некоторые продукты, поэтому мне нужно заполнить запись purchase
и таблицу ассоциаций products_purchases
, которая будет содержать все записи продуктов, купленных за этот номер purchase
.
Я буду использовать некоторый JavaScript для динамического генерации некоторых полей, чтобы иметь возможность заполнить несколько products
количествами, ценами .. во время этого purchase
, а затем сохранить все данные в JSON object
.
Таким образом, в add.ctp
зрения purchase
, я буду иметь это JSON object
для exmaple:
$data = {
"reference": "V656413",
"supplier_id": 31,
"payment_id": 5,
"products_purchases": [
{
"product_id": 5566,
"purchase_id" 999,
"quantity": 4,
"price": 899
},
{
"product_id": 7865,
"purchase_id" 999,
"quantity": 6,
"price": 54
},{
"product_id": 434,
"purchase_id" 999,
"quantity": 8,
"price": 22
},
]
}
Как POST
этот объект с помощью form
в файле add.ctp
, и может, как я могу справиться с этим и сохранить это как предприятие с его ассоциациями в PurchasesController
?
add
метод в контроллере на данный момент выглядит следующим образом:
public function add()
{
$purchase = $this->Purchases->newEntity();
if ($this->request->is('post')) {
$purchase = $this->Purchases->patchEntity($purchase, $this->request->data);
if ($this->Purchases->save($purchase)) {
$this->Flash->success(__('The purchase has been saved.'));
return $this->redirect(['action' => 'index']);
} else {
$this->Flash->error(__('The purchase could not be saved. Please, try again.'));
}
}
$this->set('_serialize', ['purchase']);
}
Большое спасибо!
Я не понимаю, как я могу отправлять и сохранять JSON, как это. – dwix
Вам необходимо декодировать данные json, а затем отправить на функцию сохранения. – Ravendra