ragnar_ok
@ragnar_ok

Как связать свободные ответы на вопрос?

Даны три сущности Doctrine.
Ответы на вопросы анкеты Answer:
/**
 * @ORM\Entity(repositoryClass="App\Repository\AnswerRepository")
 */
class Answer
{
    /**
     * @Groups({"answer"})
     * @ORM\Column(type="string", length=255, nullable=true)
     */
    private $text;

    /**
     * @Groups({"answer"})
     * @ORM\Column(type="integer", nullable=true)
     */
    private $num;

    /**
     * @Groups({"answer"})
     * @ORM\Column(type="boolean", nullable=true)
     */
    private $yn;

    /**
     * @Groups({"answer"})
     * @ORM\ManyToMany(targetEntity="App\Entity\Question", inversedBy="answers")
     */
    private $question;

    /**
     * @Groups({"answer"})
     * @ORM\ManyToMany(targetEntity="App\Entity\Options", inversedBy="answers")
     */
    private $options;
    // ...
}

Варианты ответов на вопросы анкеты Options:
class Options
{
    /**
     * @ORM\ManyToMany(targetEntity="App\Entity\Answer", mappedBy="options")
     */
    private $answers;
    // ...
}

И сущность Question с вопросами анкеты.
/**
     * @ORM\ManyToMany(targetEntity="App\Entity\Answer", mappedBy="question")
     */
    private $answers;

POST-запрос:
{
    "text": [
        "text",
        "another text"
    ],
    "num": [
        "",
        "1"
    ],
    "yn": [
        "",
        "1"
    ],
    "options": [
        "3",
        "2",
        "1"
    ],
    "question": [
        "1",
        "2"
    ]
}

Форма:
$answer = new Answer();
        $builder
            ->add('text')
            ->add('num')
            ->add('yn')
            ->add('question')
            ->add('options')
        ;

Модель БД: 5d1fbba0697d0866391553.png
Поля num, ynи text нужны для ответа на вопрос в случае, если заранее ответ не подготовлен (<input type="text">).
Optionsи Question- есть связь. Поля num, ynи text (нет привязки к options) - связи нет. Как их связать с вопросами и ответами? Сейчас они просто складываются в таблицу Answer.
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы