下午好,我正在通过 PLATFORM API 中的 POST 方法添加数据,我可以让这个方法像添加或更新数据一样工作吗? 这样,当对象的数据已经存在时,它将简单地更新 pinOrder 字段。 我的意见:
{
"chat": "/api/chats/01FVKRYXMMTHKJ2EZB02F4FZ3Z",
"pinOrder": 3
}
您可以使用 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);
}
}
插入或更新(更新插入)在 Api 平台中不可用。但是,您可以使用自定义(或修饰的)数据持久器(从 3.x 开始称为状态处理器)来实现此行为。
https://api-platform.com/docs/core/state-processors/
在数据持久化器的 persist(从 3.x 开始称为 process)方法中,您可以手动检查是否已经存在符合您条件的项目,如果是,则更新该项目而不是保留新项目。