Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用API平台在多个不同表中创建多个条目

使用API平台在多个不同表中创建多个条目
EN

Stack Overflow用户
提问于 2018-12-27 08:47:06
回答 1查看 2.3K关注 0票数 1

我正在为Symfony REST使用API平台。我只搜索一条路径,在几个不同的表中添加多个数据,因此是几个实体。这是我想去的路:

/api/订单

代码语言:javascript
运行
AI代码解释
复制
<?php

namespace App\Entity;

use ApiPlatform\Core\Annotation\ApiResource;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ApiResource()
 * @ORM\Entity(repositoryClass="App\Repository\OrderRepository")
 */
class Order
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $origin;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $destination;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $idTrackingMerchant;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $idTrackingA;

    /**
     * @ORM\OneToMany(targetEntity="App\Entity\OrderHistory", mappedBy="orderId")
     */
    private $orderHistories;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Customer", inversedBy="orders")
     * @ORM\JoinColumn(nullable=false)
     */
    private $customer;

    /**
     * @ORM\Column(type="integer")
     */
    private $weightMerchant;

    /**
     * @ORM\Column(type="integer", nullable=true)
     */
    private $weightReal;

    /**
     * @ORM\Column(type="integer")
     */
    private $taxeOctroi;

    /**
     * @ORM\Column(type="integer")
     */
    private $taxeOctroiRegional;

    /**
     * @ORM\Column(type="integer")
     */
    private $taxeTva;

    /**
     * @ORM\Column(type="integer")
     */
    private $taxeOctroiMerchant;

    /**
     * @ORM\Column(type="integer")
     */
    private $taxeOctroiRegionalMerchant;

    /**
     * @ORM\Column(type="integer")
     */
    private $taxeTvaMerchant;

    /**
     * @ORM\Column(type="datetime")
     */
    private $date_add;

    /**
     * @ORM\Column(type="datetime")
     */
    private $date_upd;

    /**
     * @ORM\OneToMany(targetEntity="App\Entity\OrderDetail", mappedBy="orderId")
     */
    private $orderDetails;

    /**
     * Order constructor.
     */
    public function __construct()
    {
        $this->date_add = new \DateTime();
        $this->date_upd = new \DateTime();
        $this->orderHistories = new ArrayCollection();
        $this->orderDetails = new ArrayCollection();
    }

    /**
     * @return int|null
     */
    public function getId(): ?int
    {
        return $this->id;
    }

    /**
     * @return null|string
     */
    public function getOrigin(): ?string
    {
        return $this->origin;
    }

    /**
     * @param string $origin
     * @return Order
     */
    public function setOrigin(string $origin): self
    {
        $this->origin = $origin;

        return $this;
    }

    /**
     * @return null|string
     */
    public function getDestination(): ?string
    {
        return $this->destination;
    }

    /**
     * @param string $destination
     * @return Order
     */
    public function setDestination(string $destination): self
    {
        $this->destination = $destination;

        return $this;
    }

    /**
     * @return null|string
     */
    public function getIdTrackingMerchant(): ?string
    {
        return $this->idTrackingMerchant;
    }

    /**
     * @param string $idTrackingMerchant
     * @return Order
     */
    public function setIdTrackingMerchant(string $idTrackingMerchant): self
    {
        $this->idTrackingMerchant = $idTrackingMerchant;

        return $this;
    }

    /**
     * @return null|string
     */
    public function getIdTrackingA(): ?string
    {
        return $this->idTrackingA;
    }

    /**
     * @param string $idTrackingA
     * @return Order
     */
    public function setIdTrackingA(string $idTrackingA): self
    {
        $this->idTrackingA = $idTrackingA;

        return $this;
    }

    /**
     * @return Collection|OrderHistory[]
     */
    public function getOrderHistories(): Collection
    {
        return $this->orderHistories;
    }

    /**
     * @param OrderHistory $orderHistory
     * @return Order
     */
    public function addOrderHistory(OrderHistory $orderHistory): self
    {
        if (!$this->orderHistories->contains($orderHistory)) {
            $this->orderHistories[] = $orderHistory;
            $orderHistory->setOrderId($this);
        }

        return $this;
    }

    /**
     * @param OrderHistory $orderHistory
     * @return Order
     */
    public function removeOrderHistory(OrderHistory $orderHistory): self
    {
        if ($this->orderHistories->contains($orderHistory)) {
            $this->orderHistories->removeElement($orderHistory);
            // set the owning side to null (unless already changed)
            if ($orderHistory->getOrderId() === $this) {
                $orderHistory->setOrderId(null);
            }
        }

        return $this;
    }

    /**
     * @return Customer|null
     */
    public function getCustomer(): ?Customer
    {
        return $this->customer;
    }

    /**
     * @param Customer|null $customer
     * @return Order
     */
    public function setCustomer(?Customer $customer): self
    {
        $this->customer = $customer;

        return $this;
    }

    /**
     * @return int|null
     */
    public function getWeightMerchant(): ?int
    {
        return $this->weightMerchant;
    }

    /**
     * @param int $weightMerchant
     * @return Order
     */
    public function setWeightMerchant(int $weightMerchant): self
    {
        $this->weightMerchant = $weightMerchant;

        return $this;
    }

    /**
     * @return int|null
     */
    public function getWeightReal(): ?int
    {
        return $this->weightReal;
    }

    /**
     * @param int|null $weightReal
     * @return Order
     */
    public function setWeightReal(?int $weightReal): self
    {
        $this->weightReal = $weightReal;

        return $this;
    }

    /**
     * @return int|null
     */
    public function getTaxeTva(): ?int
    {
        return $this->taxeTva;
    }

    /**
     * @param int $taxeTva
     * @return Order
     */
    public function setTaxeTva(int $taxeTva): self
    {
        $this->taxeTva = $taxeTva;

        return $this;
    }

    /**
     * @return int|null
     */
    public function getTaxeOctroi(): ?int
    {
        return $this->taxeOctroi;
    }

    /**
     * @param int $taxeOctroi
     * @return Order
     */
    public function setTaxeOctroi(int $taxeOctroi): self
    {
        $this->taxeOctroi = $taxeOctroi;

        return $this;
    }

    /**
     * @return int|null
     */
    public function getTaxeOctroiRegional(): ?int
    {
        return $this->taxeOctroiRegional;
    }

    /**
     * @param int $taxeOctroiRegional
     * @return Order
     */
    public function setTaxeOctroiRegional(int $taxeOctroiRegional): self
    {
        $this->taxeOctroiRegional = $taxeOctroiRegional;

        return $this;
    }

    /**
     * @return int|null
     */
    public function getTaxeTvaMerchant(): ?int
    {
        return $this->taxeTvaMerchant;
    }

    /**
     * @param int $taxeTvaMerchant
     * @return Order
     */
    public function setTaxeTvaMerchant(int $taxeTvaMerchant): self
    {
        $this->taxeTvaMerchant = $taxeTvaMerchant;

        return $this;
    }

    /**
     * @return int|null
     */
    public function getTaxeOctroiMerchant(): ?int
    {
        return $this->taxeOctroiMerchant;
    }

    /**
     * @param int $taxeOctroiMerchant
     * @return Order
     */
    public function setTaxeOctroiMerchant(int $taxeOctroiMerchant): self
    {
        $this->taxeOctroiMerchant = $taxeOctroiMerchant;

        return $this;
    }

    /**
     * @return int|null
     */
    public function getTaxeOctroiRegionalMerchant(): ?int
    {
        return $this->taxeOctroiRegionalMerchant;
    }

    /**
     * @param int $taxeOctroiRegionalMerchant
     * @return Order
     */
    public function setTaxeOctroiRegionalMerchant(int $taxeOctroiRegionalMerchant): self
    {
        $this->taxeOctroiRegionalMerchant = $taxeOctroiRegionalMerchant;

        return $this;
    }

    /**
     * @return \DateTimeInterface|null
     */
    public function getDateAdd(): ?\DateTimeInterface
    {
        return $this->date_add;
    }

    /**
     * @return \DateTimeInterface|null
     */
    public function getDateUpd(): ?\DateTimeInterface
    {
        return $this->date_upd;
    }

    /**
     * @param \DateTimeInterface $date_upd
     * @return Order
     */
    public function setDateUpd(\DateTimeInterface $date_upd): self
    {
        $this->date_upd = $date_upd;

        return $this;
    }

    /**
     * @return Collection|OrderDetail[]
     */
    public function getOrderDetails(): Collection
    {
        return $this->orderDetails;
    }

    /**
     * @param OrderDetail $orderDetail
     * @return Order
     */
    public function addOrderDetail(OrderDetail $orderDetail): self
    {
        if (!$this->orderDetails->contains($orderDetail)) {
            $this->orderDetails[] = $orderDetail;
            $orderDetail->setOrderId($this);
        }

        return $this;
    }

    /**
     * @param OrderDetail $orderDetail
     * @return Order
     */
    public function removeOrderDetail(OrderDetail $orderDetail): self
    {
        if ($this->orderDetails->contains($orderDetail)) {
            $this->orderDetails->removeElement($orderDetail);
            // set the owning side to null (unless already changed)
            if ($orderDetail->getOrderId() === $this) {
                $orderDetail->setOrderId(null);
            }
        }

        return $this;
    }
}

这个实体与实体OrderDetail和OrderHistory有关系,我必须将这2个实体添加到它们的表中。我如何在API平台上做到这一点?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-27 18:27:11

若要将嵌入实体保存在单个请求中,必须使用序列化程序组并启用级联持久化。

首先,将序列化程序组应用于order实体非嵌入式属性。

代码语言:javascript
运行
AI代码解释
复制
use Symfony\Component\Serializer\Annotation\Groups;

...

/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 * @Groups("order")
 */
 private $id;

接下来,将组应用于嵌入的属性,并添加级联选项:

代码语言:javascript
运行
AI代码解释
复制
/**
 * @ORM\OneToMany(targetEntity="App\Entity\OrderDetail", mappedBy="orderId", cascade={"persist", "remove"})
 * @Groups("order:order_detail")
 */
 private $orderDetails;

接下来,将组应用于嵌入的实体属性:

代码语言:javascript
运行
AI代码解释
复制
public class OrderDetail {

/**
 * ...
 * @Groups("order_detail")
 */
 private $id;

 ...

}

并将它们添加到序列化上下文中,如果您不希望在检索数据时嵌入它们,则可以从normalizationContext中删除组

代码语言:javascript
运行
AI代码解释
复制
/**
 * @ApiResource(
 *  normalizationContext={"groups"={"order", "order:order_detail", "order_detail"}},
 *  denormalizationContext={"groups"={"order", "order:order_detail", "order_detail"}}
 *)
 * @ORM\Entity(repositoryClass="App\Repository\OrderRepository")
 */
class Order {  }

现在,您可以使用一个请求保存它:

代码语言:javascript
运行
AI代码解释
复制
POST /orders
{
  ...
  orderDetails: [{ "myProperty": "myValue", ... }]
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53948270

复制
相关文章
实现两个N*N矩阵的乘法,矩阵由一维数组表示
实现两个N*N矩阵的乘法,矩阵由一维数组表示。 先介绍一下矩阵的加法: 1 void Add(int rows, int cols) 2 { 3 for(int i= 0;i<rows;i++) 4 { 5 for(int j=0;j<cols;j++) 6 result[i][j]=mat1[i][j]+mat2[i][j]; 7 } 8 } 若两个矩阵要做乘法运:只有在一
猿人谷
2018/01/17
1.4K0
实现两个N*N矩阵的乘法,矩阵由一维数组表示
实现两个N*N矩阵的乘法,矩阵由一维数组表示。 先介绍一下矩阵的加法: 1 void Add(int rows, int cols) 2 { 3 for(int i= 0;i<rows;i++) 4 { 5 for(int j=0;j<cols;j++) 6 result[i][j]=mat1[i][j]+mat2[i][j]; 7 } 8 } 若两个矩阵要做乘法运:只有在一
猿人谷
2018/01/17
1.3K0
实现两个N*N矩阵的乘法,矩阵由一维数组表示
实现两个N*N矩阵的乘法,矩阵由一维数组表示。 先介绍一下矩阵的加法: 1 void Add(int rows, int cols) 2 { 3 for(int i= 0;i<rows;i++) 4 { 5 for(int j=0;j<cols;j++) 6 result[i][j]=mat1[i][j]+mat2[i][j]; 7 } 8 } 若两个矩阵要做乘法运:只有在一
猿人谷
2018/01/17
2.3K0
矩阵乘法
#include <stdio.h> #include <stdlib.h> #include <math.h> #define LEN 3
WindCoder
2018/09/20
8440
[每日一题]矩阵乘法
本次的题目来源于C语言网比赛栏目八月月赛第一题,记得去试试看看自己能不能AC哦!!! 题目描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入 第一行是一个正整数N、M(1< =N< =30, 0< =M< =5),表示矩阵A的阶数和要求的幂数 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值 输出 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开
编程范 源代码公司
2018/04/18
1.3K0
java矩阵类,矩阵的乘法
问题如下 矩阵成积.jpg 我采用的是3重循环,先计算的列的结果,应该还可以先计算行的结果,然后求出矩阵的乘法。没有过多的技巧,就是循环的使用。 相关的code package day20180
热心的社会主义接班人
2018/08/02
1.6K0
java矩阵类,矩阵的乘法
09:矩阵乘法
09:矩阵乘法 总时间限制: 1000ms 内存限制: 65536kB描述 计算两个矩阵的乘法。n*m阶的矩阵A乘以m*k阶的矩阵B得到的矩阵C 是n*k阶的,且C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + …… +A[i][m-1]*B[m-1][j](C[i][j]表示C矩阵中第i行第j列元素)。 输入第一行为n, m, k,表示A矩阵是n行m列,B矩阵是m行k列,n, m, k均小于100 然后先后输入A和B两个矩阵,A矩阵n行m列,B矩阵m行k列,
attack
2018/04/03
1.7K0
理解矩阵乘法
大多数人在高中,或者大学低年级,都上过一门课《线性代数》。这门课其实是教矩阵。 刚学的时候,还蛮简单的,矩阵加法就是相同位置的数字加一下。 矩阵减法也类似。 矩阵乘以一个常数,就是所有位置都乘以这个数
ruanyf
2018/04/13
1.5K0
理解矩阵乘法
矩阵乘法问题
问题描述 给定n个矩阵:A1,A2,...,An,其中Ai与Ai+1是可乘的,i=1,2...,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。 ---- 矩阵乘法
我没有三颗心脏
2018/04/26
1.5K0
矩阵乘法问题
矩阵乘法的java实现
文章目录 1、算法思想 2、代码实现 1、算法思想 最近老是碰到迭代问题,小数太多手算又算不过来,写个矩阵乘法辅助一下吧。 有两个矩阵A和B,计算矩阵A与B相乘之后的结果C。 A的列数必须等于B的行数 用矩阵A的第i行的值分别乘以矩阵B的第J列,然后将结果相加,就得到C[i][j]。 矩阵A的行等于C的行,矩阵B的列等于C的列,这两个数值用来控制循环的次数,但是每一步中需要把行和列中对应的乘机求和,所以再加一个内循环控制乘法求和就行。 下面我们进行矩阵乘法的测试 A = \begin{
别团等shy哥发育
2023/02/25
1.8K0
矩阵乘法的java实现
算法系列-----矩阵(四)-------------矩阵的乘法
而如果该函数被下面调用了,已经判断了a的长度和b的长度是相等的,所以这里只是单独的抽出来而已
wust小吴
2022/03/04
5160
详解Python中的算术乘法、数组乘法与矩阵乘法
(2)列表、元组、字符串这几种类型的对象与整数之间的乘法,表示对列表、元组或字符串进行重复,返回新列表、元组、字符串。
Python小屋屋主
2021/05/11
9.6K0
详解Python中的算术乘法、数组乘法与矩阵乘法
[动态规划] 矩阵链乘法问题
矩阵链乘法问题是指给定一串矩阵序列M₁M2..Mn,求至少需要进行多少次乘法运算才能求得结果
racaljk
2018/08/31
1.8K0
[动态规划] 矩阵链乘法问题
Python|详解矩阵乘法
矩阵相信大家都知道,是线性代数中的知识,就是一系列数集。顾名思义,数字组成的矩形,例如:
算法与编程之美
2020/03/25
2.6K0
彻底理解矩阵乘法
今天的角度比较清奇,我们来讲讲矩阵的乘法。当然了,我告诉你的肯定不是大学教科书上那些填鸭式的云里雾里的计算规则,你可能将规则背下来了,但完全不理解为什么会这样。别怕,我将会在这篇文章中为你带来矩阵乘法的全新体验,就算你大学时代学的高数全忘了也能看懂这篇文章。
米开朗基杨
2019/12/06
1.8K0
彻底理解矩阵乘法
算法训练 矩阵乘法
问题描述   输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。 输入格式   第一行,空格隔开的三个正整数m,s,n(均不超过200)。   接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。   接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。 输出格式   m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。 样例输入 2 3 2 1 0 -1 1 1 -3 0 3 1 2 3 1 样例输出 -3 2 -8 2
AI那点小事
2020/04/20
6680
算法训练 矩阵乘法
基础练习 矩阵乘法
  给定一个N阶矩阵A,输出A的M次幂(M是非负整数)   例如:   A =   1 2   3 4   A的2次幂   7 10   15 22
刘开心_1266679
2019/02/14
8840
#100. 矩阵乘法
矩阵乘法 内存限制:256 MiB时间限制:2000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 这是一道模板题。 分别给定 n×p n \times pn×p 和 p×m p \times mp×m 的两个矩阵 A AA 和 B BB,求 A×B A \times BA×B。 输入格式 第一行三个正整数 n nn、p pp、m mm,表示矩阵的长宽。 之后的 n nn 行,每行 p pp 个整数,表示矩阵 A AA。 之后的 p pp 行,每
attack
2018/04/11
1.9K0
#100. 矩阵乘法
Java-矩阵乘法
"Never, never, never, never give up."  -----Winston Leonard Spencer Churchill
圆号本昊
2021/09/24
9210
Java-矩阵乘法
matlab 稀疏矩阵 乘法,Matlab 矩阵运算[通俗易懂]
说明:这一段时间用Matlab做了LDPC码的性能仿真,过程中涉及了大量的矩阵运算,本文记录了Matlab中矩阵的相关知识,特别的说明了稀疏矩阵和有限域中的矩阵。Matlab的运算是在矩阵意义下进行的,这里所提到的是狭义上的矩阵,即通常意义上的矩阵。
全栈程序员站长
2022/09/12
3.1K0

相似问题

矩阵循环乘法

25

矩阵乘法循环

20

N维矩阵乘法python

23

cupy矩阵乘法n次

129

n*n矩阵乘法需要多少步?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档