Форум программистов, компьютерный форум, киберфорум
Наши страницы

Symfony

Войти
Регистрация
Восстановить пароль
 
yy401
12 / 12 / 3
Регистрация: 07.07.2011
Сообщений: 49
#1

Форма и связанные таблицы - Symfony

04.05.2018, 01:22. Просмотров 43. Ответов 2
Метки нет (Все метки)

У меня есть две таблицы с вопросами и ответами, связанные между собой:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// App\Entity\Question;
 
/**
 * @ORM\Entity(repositoryClass="App\Repository\QuestionRepository")
 */
class Question
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;
 
    /**
     * @var string
     * @ORM\Column(type="text")
     */
    private $text;
 
    /**
     * @var ArrayCollection
     * @ORM\OneToMany(targetEntity="App\Entity\Answer", mappedBy="question")
     */
    private $answerArray;
 
    /**
     * @ORM\OneToOne(targetEntity="App\Entity\Answer", mappedBy="id")
     * @ORM\JoinColumn(nullable=true)
     */
    private $correctAnswer;
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// App\Entity\Answer;
 
/**
 * @ORM\Entity(repositoryClass="App\Repository\AnswerRepository")
 */
class Answer
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;
 
    /**
     * @var string
     * @ORM\Column(type="text")
     */
    private $text;
 
    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Question", inversedBy="answerArray")
     * @ORM\JoinColumn(nullable=false)
     */
    private $question;
Суть в том, что для одного вопроса есть несколько вариантов ответа, один из которых правильный.

Форма:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// App\Form\QuestionType ;
 
class QuestionType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('text')
            ->add('correctAnswer')
        ;
    }
 
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Question::class,
        ]);
    }
}
Контроллер:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 // App\Controller\QuestionController
 
class QuestionController extends Controller
{
    /**
     * @Route("/{id}/edit", name="question_edit", methods="GET|POST")
     */
    public function edit(Request $request, Question $question): Response
    {
        $form = $this->createForm(QuestionType::class, $question);
        $form->handleRequest($request);
 
        if ($form->isSubmitted() && $form->isValid()) {
            // ...
        }
 
        return $this->render('question/edit.html.twig', [
            'question' => $question,
            'form' => $form->createView(),
        ]);
    }
Это админка, в которой администратор может указать какой из ответов на вопрос является правильным.

У меня есть две проблемы:
1. В выпадающем списке correctAnswer выводятся абсолютно все ответы, какие есть в базе. А должны выводиться только те, у которых question соответствует вопросу, который в данный момент редактируется.
2. Профилировщик выдает ошибку: The mappings App\Entity\Question#correctAnswer and App\Entity\Answer#question are inconsistent with each other.

У меня есть подозрение, что обе проблемы должны решаться правильными аннотациями в сущностях, но не могу сообразить как их правильно приготовить.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2018, 01:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Форма и связанные таблицы (Symfony):

Связанные сущности Doctrine2 - PHP
Здравствуйте, у меня был и есть интернет магазин на KO3 Сейчас я портирую его на последнюю стабильную версию Symfony 2.6 в которой я пока...

Doctrine 2 и связанные сущности - PHP
Как реализовать связь, при которой в качестве внешнего ключа выступает id другой таблицы? Проблема в том, что при каскадном обновлении...

как получить связанные данных через relations и отобразить их через CActiveDataProvider? - PHP
Добрый день Уважаемые программисты! Суть вопроса: Имеется 3 таблицы, 2 из них реализованы как модели (Profile, Post) и 1...

Связанные списки и форма. - MS Access
Добрый день! В форме ПутевойЛист при выборе Вида техники появляется Марка, гос.номер этого вида техники. Вопрос: в первой записи...

Связанные таблицы - MS Access
Мне приходят несколько файлов csv/ xlsx. Каждый файл - будущая таблица в бд. В файлах нет первичных ключей. Создаю в access связанные...

Связанные таблицы - Delphi БД
Сделал связанные таблицы все работает но когда выходишь из программы он выдает ошибку перевод: Нарушение прав доступа по адресу...

2
Borsche
163 / 92 / 33
Регистрация: 03.07.2016
Сообщений: 410
04.05.2018, 08:39 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от yy401 Посмотреть сообщение
* @ORM\OneToOne(targetEntity="App\Entity\Answer", mappedBy="id")
* * ** @ORM\JoinColumn(nullable=true)
Уберите mappedBy, и исправте @JoinColumn(name="correct_answer_id", referencedColumnName="id"). Это по второму вопросу.
По первому, что логика у вас покошеная(это как по мне). Ну не суть. Вам нужно в форме нормально поля настроить чтобы показывало только то что нужно. Вот вам доки https://symfony.com/doc/3.4/reference/forms/types/entity.html ройте в сторону query_builder.
1
yy401
12 / 12 / 3
Регистрация: 07.07.2011
Сообщений: 49
04.05.2018, 09:28  [ТС] #3
Borsche, благодарю! Обе проблемы решены.

По первому вопросу сделал так:
PHP
1
2
3
4
5
6
7
$builder
    ->add('text')
    ->add('correctAnswer', EntityType::class, [
        'class' => "App:Answer",
        'choices' => $builder->getData()->getAnswerArray()
    ])
;
Теперь выводится только то, что нужно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2018, 09:28
Привет! Вот еще темы с ответами:

Связанные таблицы - PHP БД
Подскажите пожалуйста. Из базы выводится id заказанных товаров в $myrow_order, а их данные выводятся в $myrow_basket, $id_order - id...

Связанные таблицы - MS Access
Приветствую, всех. Есть связанная таблица, связь с файлом ТХТ. Удобно для обновления данных иметь такую связь. Вопрос: как развязать...

связанные таблицы - MS Access
У меня вопрос на засыпку: связанные таблицы являются обновляемыми? Другими словами, если я изменю исходную таблицу, а затем в accesse...

Не связанные таблицы - MS Access
Имеются Таблица1 с полями ААА, ВВВ, ССС, DDD и Таблица2 с полем ХХХ. Таблицы не связаны между собой. Как в построителе выражений для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru