Ich habe zwei viele-zu-eins-Beziehungen, in denen Objekte $countryFrom
und $countryTo
von Notification
die Werte aus der Spalte id_country_form
und id_country_to
erhalten und sehen in Country
Tabelle für ein id
mit dem gleichen Wert . Ich habe Setter und Getters für alle Eigenschaften.Lehre setzt gültige Parameter auf bündig auf null()
Entity Mitteilung
class Notification
{
/**
* @ORM\ManyToOne(targetEntity="Country")
* @ORM\JoinColumn(name="id_country_from", referencedColumnName="id")
*/
private $countryFrom;
/**
* @ORM\ManyToOne(targetEntity="Country")
* @ORM\JoinColumn(name="id_country_to", referencedColumnName="id")
*/
private $countryTo;
/**
* @var integer
*
* @ORM\Column(name="id_country_from", type="integer", nullable=false)
*/
private $idCountryFrom;
/**
* @var integer
*
* @ORM\Column(name="id_country_to", type="integer", nullable=false)
*/
private $idCountryTo;
}
Entity Land
class Country
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
}
Allerdings, wenn ich möchte Daten in DB von der Steuerung einzusetzen, die Eigenschaften im Zusammenhang mit id_country_form
und id_country_to
sind auf Null gesetzt.
Controller-Methode
$notif = new Notification;
$notif->setCountryFrom(5); // SET to NULL
$notif->setCountryTo(6); // SET to NULL
$notif->setCreatedAt(new \DateTime());
$em->persist($notif);
$em->flush();
var_dump ($ Benachrichtigung) nach persistieren()
object(AppBundle\Entity\Notification)[457]
private 'countryFrom' => null
private 'countryTo' => null
private 'idCountryFrom' => int 5 // SET
private 'idCountryTo' => int 6 // SET
private 'createdAt' =>
object(DateTime)[448]
public 'date' => string '2016-06-14 06:32:35.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)
private 'id' => null
Hier
wir sehen, dass idCurrencyFrom und idCurrencyTo sind gefassten nach persistieren(), aber der nächste Fehler auftritt:
An exception occurred while executing 'INSERT INTO alerts (id_currency_from, id_currency_to, active, created_at) VALUES (?, ?, ?, ?)' with params [null, null, "2016-06-14 06:32:35"]:
Der Code gearbeitet, bevor ich die Viele-zu-eins-Beziehungen festgelegt.
Haben Sie sich das Ergebnis 'var_dump' angesehen? Die Werte sind richtig gespeichert, das Problem ist, wenn ich flush() rufe, weiß ich nicht, was Doctrine tut, aber es überschreibt die Werte auf "null". – Bacchus
Sie setzen die $ idCountryFrom-Eigenschaft und nicht die $ countryFrom -Eigenschaft, und in Ihrer Entität definieren Sie 2 Eigenschaften für 1 Spalte. Sie sollten $ idCountryFrom und $ idCountryTo entfernen. – jrergon