将项目添加到数组集合 api 平台

Adding item to Array collection api platform

我有一个问题实体 'OneToMany' 与答案相关。问题是如何使用 path='question/{id}/add_answer' 创建自定义端点以添加对特定问题的回答。

loopback中我们可以这样实现

http:{
        verb:'patch',
        path:'/:questionId/add_answer/'
    }

您真的不需要自定义端点。您可以使用以下内容向 asnwer 问题添加答案 posting:

{
  "question": {"id": 2},
  "message": "Hello, this is my answer for question with id 2"
}

您必须在您想要 post 的答案属性中添加 post 组(在本例中为消息),在答案 属性 和问题 ID 中的问题关系中实体。

如果您仍想为此创建自定义操作。您应该将此注释添加到下面的问题实体中以进行收集操作:

 *          "add_answer"={
 *              "method"="POST",
 *              "path"="/question/{id}/add_answer",
 *              "controller"=AddAnswerAction::class,
 *              "denormalization_context"={
 *                  "groups"={"add-answer"} //add this group to the properties that you want to post. You probable has to create and field in this entity. You dont need add it to the bbdd.
 *              }
 *          },

在 Controller 目录下,您必须创建 AddAnswerAction.php 并执行逻辑。像这样:

<?php

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

final class AddAnswerAction
{

    public function __construct(
    ) {
    }

    /**
     * @return Response
     */
    public function __invoke(Question $question)
    {
         //logic
    }
}

顺便说一句。推荐第一个选项。