我有一个需要post并使用cakePHP 3保存的JSON对象。

首先,我有4张桌子,如下图所示javascript - 使用cakePHP 3将JSON对象另存为具有关联的实体-LMLPHP

假设供应商购买了一些产品,因此我需要填写一个purchase记录和关联表products_purchases,其中将包含在那个purchase期间购买的产品的所有记录。

我将使用一些JavaScript动态生成一些字段,以便能够在该products中用数量,价格..填充多个purchase,然后将所有数据存储在JSON object中。

因此,在add.ctppurchase视图中,我将使用这个JSON object作为示例:

$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']);
    }


非常感谢你!

最佳答案

您必须管理与模型的正确关联。请访问下面的链接,您可以在其中查看如何保存关联数据。

https://book.cakephp.org/3.0/en/orm/saving-data.html

关于javascript - 使用cakePHP 3将JSON对象另存为具有关联的实体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42147587/

10-12 12:46
查看更多