Добавление элемента в платформу API Array collection - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть объект «Вопрос», относящийся к «OneToMany» с ответом.Вопрос в том, как создать пользовательскую конечную точку с путем = 'question / {id} / add_answer', чтобы добавить ответ на определенный вопрос.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Вам не нужно настраивать конечную точку для этого.Вы можете добавить ответную публикацию к ответу на вопрос примерно так:

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

Вы должны добавить группу сообщений в свойствах ответов, которые вы хотите опубликовать (в данном случае это сообщение), в отношениях вопросов всвойство ответа и идентификатор объекта вопроса.

Если вы все еще хотите создать для этого пользовательскую операцию.Вы должны добавить эту аннотацию к вашей сущности вопроса ниже к операциям сбора:

 *          "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
    }
}

Кстати.Рекомендуется 1-й вариант.

0 голосов
/ 20 февраля 2019

В петле мы можем сделать таким образом.

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