Доктрина многие другие по другому индексу, чем ID

У меня есть Entity A с oneToMany B
Сущность A:

/**
* @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 ...

И сущность Б

/**
* @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 ...

Я пытаюсь сделать:

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

Я сохраняю их. И когда я сбрасываю, у меня есть эта ошибка:

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

Я действительно не знаю, что делать, кажется, у меня проблема с индексами … (?) Любая помощь приветствуется

Обновить :

Если я добавлю @ORM\Id на $ uid и я удаляю @ORM\GeneratedValue(strategy="AUTO") это работает, когда я вручную устанавливаю поле A.id …
Я все ближе к цели! ^^

0

Решение

Вы ссылаетесь на uid из класса A в качестве referenceColumn для отношения, которое является пустым полем. измените это на


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

или сделать UID обнуляемым ложным. Поскольку данные uid уникальны, также рассмотрите возможность создания uid в качестве первичного ключа для класса A.

0

Другие решения

Других решений пока нет …