2017-10-06 2 views
0

Ich habe ein A Entity mit OneToMany B
Entity A:Lehre manyToOne auf einem anderen Indexe als ID

/** 
* @ORM\Table(name="A", indexes={ 
*  @ORM\index(name="uid", columns={"uid"}), 
* }) 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ARepository") 
*/ 
class A 
{ 

/** 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @var string 
* @ORM\Column(name="uid", type="string", length=50, unique=true) 
*/ 
private $uid; 

/** 
* ORM\OneToMany(targetEntity="AppBundle\Entity\B",mappedBy="a",cascade={"persist","remove"}) 
*/ 
private $b; 

// Guetters and setters ... 

Und Entity B

/** 
* @ORM\Table(name="B") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\BRepository") 
*/ 
class B 
{ 
/** 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\A",inversedBy="b") 
* @ORM\JoinColumn(referencedColumnName="uid",name="a_uid") 
*/ 
private $a; 

// Guetters and setters ... 

ich versuchen zu tun:

$A = new A(); 
$B->setA($A); 

Ich persistiere sie. Und wenn ich spülen, habe ich diesen Fehler: (?)

[Symfony\Component\Debug\Exception\ContextErrorException] 
Notice: Undefined index: uid 

Ich weiß wirklich nicht, was zu tun ist, es scheint, ich habe ein Problem Indizes ... Jede Hilfe ist willkommen

Update:

Wenn ich hinzufügen @ORM\Id auf $ uid und ich entferne @ORM\GeneratedValue(strategy="AUTO") es funktioniert, wenn ich manuell A.id Feld ...
Ich komme näher an das Ziel! ^^

Antwort

0

Sie verweisen auf Uid aus Klasse A als Referenzspalte für die Beziehung, bei der es sich um ein Nullwertfeld handeln kann. ändern Sie ihn auf

/** * @ORM\ManyToOne(targetEntity="AppBundle\Entity\A",inversedBy="b") * @ORM\JoinColumn(referencedColumnName="id",name="a_id") */ private $a;

oder die UID auf NULL festlegbare falsch machen. Da die uid-Daten eindeutig sind, sollten Sie auch die Verwendung von uid als Primärschlüssel für Klasse A in Erwägung ziehen.

Verwandte Themen