Ich versuche, das Formular aus dem Standardcontroller zu erstellen . Ich möchte, dass die Werte aus den Dropdownlisten in der Homepage in den ET1- und ET2-Spalten der Ereignistabelle gespeichert werden, was ich tun kann. Ich möchte jedoch, dass die user_id für den angemeldeten Benutzer auch in der Spalte user_id der Ereignistabelle gespeichert werden soll. Bei dem Versuch, dies zu tun, es gibt mir den Fehler:Eine Ausnahme ist während der Ausführung von INSERT INTO-Ereignissen (user_id, ET1, ET2) VALUES (?,?,?) Mit params [null, 2, 3] aufgetreten:
<?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();
}
}
Unten
An exception occurred while executing 'INSERT INTO events (user_id, ET1, ET2) VALUES (?, ?, ?)' with params [null, 2, 3]: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null
Hier ist mein Code für default
<?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 (i.e. the INSERT query)
$em->flush();
return $this->redirectToRoute('homepage');
}
}
return $this->render('default/index.html.twig', array(
'form' => $form->createView(),
));
}
Unterhalb der Benutzer etity ist die Ereignisse Einheit ist
<?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;
}
}
Tausend Dank .. m neu zu symfony und war hier seit gestern fest .. das funktioniert perfekt jetzt :) – utkarsh2k2
Nachdem ich die obige Lösung anwenden funktioniert der Code gut. Ich möchte jedoch auf den Wert user_id der Ereigniseinheit zugreifen. Wenn ich dies unter Verwendung von getuser_id() versuche, gibt es einen Fehler - Versuch, eine undefinierte Methode namens "getuser_id" der Klasse "AppBundle \ Entity \ events" aufzurufen. das Verfahren ist '/ ** * Get User_id * * @return integer */ public function getuser_id() { return $ this-> User_id; } ' – utkarsh2k2