FOSRestBundle在POST请求期间从ManyToMany / One字段获取数据

时间:2016-03-24 10:57:45

标签: php symfony fosrestbundle

我正在使用FOSRestBundle并尝试在我的数据库中发布新的server

我的服务器实体包含ManyToManyOneToMany个引用

// SERVER ENTITY

/**
 * @var int
 *
 * @ORM\Column(type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(type="string", length=64)
 */
private $name;

// OTHER SIMPLE FIELD

/**
 * @var Os
 *
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Os", inversedBy="servers")
 * @ORM\JoinColumn(referencedColumnName="id", nullable=true)
 */
private $os;

/**
 * @var ServiceIp[]|ArrayCollection
 *
 * @ORM\OneToMany(targetEntity="AppBundle\Entity\ServiceIp", mappedBy="server")
 */
private $serviceIps;

我在 API中<{1}} postAction

ServerController

我发送一个带有JSON主体的POST请求来设置新数据

// $server is the request body
public function postAction(Server $server, ConstraintViolationListInterface $validationErrors)
{
    if ($validationErrors->count() > 0) {
        return $this->handleBodyValidationErrorsView($validationErrors);
    }

    $em = $this->getDoctrine()->getManager();

    $em->persist($server);
    $em->flush();

    return $this->view($server);
}

但是当我发送此请求时,{ "name": "test", "os": [ { "id": 1 } ] } 为空

os

此操作适用于{ "id": null, "name": "test", "os": { "id": null, "slug": null, "name": null } } 等简单字段,但不适用于复杂字段。

如何在请求之前获取我身体中name设置的当前os值? 这是制作它的好方法吗?

感谢您的帮助。

0 个答案:

没有答案