У меня есть 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 …
Я все ближе к цели! ^^
Вы ссылаетесь на uid из класса A в качестве referenceColumn для отношения, которое является пустым полем. измените это на
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\A",inversedBy="b")
* @ORM\JoinColumn(referencedColumnName="id",name="a_id")
*/
private $a;
или сделать UID обнуляемым ложным. Поскольку данные uid уникальны, также рассмотрите возможность создания uid в качестве первичного ключа для класса A.
Других решений пока нет …