API平台添加或更新

问题描述 投票:0回答:2

下午好,我正在通过 PLATFORM API 中的 POST 方法添加数据,我可以让这个方法像添加或更新数据一样工作吗? 这样,当对象的数据已经存在时,它将简单地更新 pinOrder 字段。 我的意见:

{
  "chat": "/api/chats/01FVKRYXMMTHKJ2EZB02F4FZ3Z",
  "pinOrder": 3
}
api-platform.com
2个回答
0
投票

您可以使用 PRE_WRITE 事件。例如,订单商品数量。

public static function getSubscribedEvents(): array
{
    return [
        KernelEvents::VIEW => [
            'updateExistingItemQuantity', EventPriorities::PRE_WRITE,
        ],
    ];
}

public function updateExistingItemQuantity(
    ViewEvent $event
): void {
    $item = $event->getControllerResult();
    $method = $event->getRequest()->getMethod();

    if (!$item instanceof MyItemObject || Request::METHOD_POST !== $method) {
        return;
    }

    // find duplicateItem

    if ($duplicateItem) {
        $duplicateItem->setQuantity("UPDATED QUANTITY");

        // save $duplicateItem

        $event->setControllerResult($duplicateItem);
    }
}

0
投票

插入或更新(更新插入)在 Api 平台中不可用。但是,您可以使用自定义(或修饰的)数据持久器(从 3.x 开始称为状态处理器)来实现此行为。

https://api-platform.com/docs/core/state-processors/

在数据持久化器的 persist(从 3.x 开始称为 process)方法中,您可以手动检查是否已经存在符合您条件的项目,如果是,则更新该项目而不是保留新项目。

© www.soinside.com 2019 - 2024. All rights reserved.