У меня есть 2 сущности:
class Client
{
/**
* @var integer $mainId
*
* @ORM\Column(name="main_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $mainId;
/**
* @var string $id
*
* @ORM\Column(name="id", type="string", length=10, nullable=false, unique=true)
*/
private $id;
...
}
class Child
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var Client
*
* @ORM\ManyToOne(targetEntity="Client")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="client_id", referencedColumnName="id")
* })
*/
private $clientId;
....
}
По какой-то причине внешний ключ из дочерней таблицы не указывает на первичный ключ таблицы Client, но в любом случае я не думаю, что этодолжна быть проблема.
Когда я пытаюсь выполнить следующее действие в моем контроллере:
$ child-> set ...$ Ляющих> setClientId ($ клиент);$ em-> persist ($ child);
Я получаю следующую ошибку:
Notice: Undefined index: id in C:\wamp\www\myApp\vendor\doctrine\lib\Doctrine\ORM\Persisters\BasicEntityPersister.php line 510
Я пытался добавить аннотацию @Index в свою таблицу клиентов, но все равно получаю ошибку ...
У меня никогда не было такой проблемы, любая помощь будет приветствоваться.
РЕДАКТИРОВАТЬ
Если я переместлю "@ORM \ Idmsgstr "аннотация от $ mainId до $ id в моем классе Client, это работает.Означает ли это, что Doctrine 2 не допускает использование внешних ключей, указывающих на поля «не первичного ключа»?