Я пытаюсь создать форму внутри контроллера по умолчанию. Я хочу, чтобы значения из выпадающих списков на главной странице сохранялись в столбцах ET1 и ET2 таблицы событий, которые я могу сделать. Однако я хочу, чтобы user_id для зарегистрированного пользователя также должен храниться в столбце user_id таблицы событий. При попытке сделать это он дает мне ошибку:
Исключение произошло при выполнении «INSERT INTO events (user_id, ET1, ET2) VALUES (?,?,?)» С параметрами [null, 2, 3]: SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Колонка user_id не может быть нулевым
- PHP7 + Symfony 2.8, Не удалось записать данные сеанса
- Использование дискриминатора в сущности, которая расширяет другую
- Переопределение шаблона FOSUserBundle по умолчанию, никакого эффекта
- как правильно использовать webSockets в Symfony2
- Как визуализировать объект DateTime в шаблоне Twig
- Доктрина Symfony2 получает случайный продукт из категории
Вот мой код для контроллера по умолчанию
<?php namespace AppBundle\Controller; use AppBundle\Entity\events; //use AppBundle\Entity\eventtype; use AppBundle\Entity\users; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; class DefaultController extends Controller { /** * @Route("/home", name="homepage") */ public function indexAction(Request $request) { $events = new events(); $form = $this->createFormBuilder($events) ->add('eT1', ChoiceType::class, array( 'choices' => array( 'Poker' => 1, 'Chess' => 2, 'Cricket' => 3, 'Marbles' => 4, 'Football' => 5, ), 'choices_as_values' => true, )) ->add('eT2', ChoiceType::class, array( 'choices' => array( 'Poker' => 1, 'Chess' => 2, 'Cricket' => 3, 'Marbles' => 4, 'Football' => 5, ), 'choices_as_values' => true, )) ->add('save', SubmitType::class, array('label' => 'Submit')) ->getForm(); if ($request->isMethod('POST')) { $form->submit($request); if ($form->isValid()) { // perform some action, eg. persisting the data to database... $user = $this->container->get('security.context')->getToken()->getUser(); $id = $user->getId(); // var_dump($id); // exit; $events->setuserID($id); $em = $this->getDoctrine()->getManager(); // tells Doctrine you want to (eventually) save the Product (no queries yet) $em->persist($events); // actually executes the queries (ie the INSERT query) $em->flush(); return $this->redirectToRoute('homepage'); } } return $this->render('default/index.html.twig', array( 'form' => $form->createView(), )); }
Ниже приведен список пользователей
<?php namespace AppBundle\Entity; use FOS\UserBundle\Model\User as BaseUser; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; use Doctrine\Common\Collections\ArrayCollection; /** * users * * @ORM\Table(name="users") * @ORM\Entity(repositoryClass="AppBundle\Repository\usersRepository") */ class users extends BaseUser { /** * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * Get id * @return integer */ public function getId() { return $this->id; } /** * @ORM\OneToMany(targetEntity="events", mappedBy="users") */ protected $multiEvents; public function __construct() { parent::__construct(); $this->multiEvents = new ArrayCollection(); } }
Ниже представлен объект событий
<?php namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * events * * @ORM\Table(name="events") * @ORM\Entity(repositoryClass="AppBundle\Repository\eventsRepository") */ class events { /** * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @var int * * @ORM\Column(name="user_id", type="integer") */ protected $user_id; /** * @var int * * @ORM\Column(name="ET1", type="integer") */ protected $eT1; /** * @var int * * @ORM\Column(name="ET2", type="integer") */ protected $eT2; /** * @ORM\ManyToOne(targetEntity="users", inversedBy="multievents") * @ORM\JoinColumn(name="user_id", referencedColumnName="id") */ private $singleUser; /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Get user_id * * @return integer */ public function getuser_id() { return $this->user_id; } /** * Set user_id * * @param integer $user_id * @return events */ public function setuserID($user_id) { $this->user_id = $user_id; return $this; } /** * Set eT1 * * @param integer $eT1 * @return events */ public function setET1($eT1) { $this->eT1 = $eT1; return $this; } /** * Get eT1 * * @return integer */ public function getET1() { return $this->eT1; } /** * Set eT2 * * @param integer $eT2 * @return events */ public function setET2($eT2) { $this->eT2 = $eT2; return $this; } /** * Get eT2 * * @return integer */ public function getET2() { return $this->eT2; } }