Я хочу иметь прямую связь между двумя полями сущностей из одной таблицы.
Идея состоит в том, чтобы добавить мою сущность manager_id, которая будет указывать на другого пользователя в пользовательской таблице (я пробовал с OneToOne.
Когда пользователь вызывает действие, user_id, которому, например, отправить сообщение, будет извлечен как
$user->getManager()->getId();
Журнал ошибок говорит:
Сопоставление для идентификатора поля не найдено.
class User
{
/**
* @ORM\Id
* @ORM\Column(type = "integer")
* @ORM\GeneratedValue(strategy = "AUTO")
*/
protected $id;
/**
* @ORM\OneToOne(targetEntity = "App\Entity\User",
mappedBy = "id")
*/
private $manager;






Простой способ создать такое отношение — использовать ненаправленный тип отношения. Код для него выглядит так:
class User
{
/**
* @var int
*
* @ORM\Id
* @ORM\Column(type = "integer")
* @ORM\GeneratedValue(strategy = "AUTO")
*/
protected $id;
/**
* @var User
*
* @ORM\ManyToOne(targetEntity = "App\Entity\User")
*/
private $manager;
}
Теперь вы можете сделать:
/** @var User $user */
$managerId = $user->getManager()->getId();
Надеюсь это поможет.
PS. Я добавил несколько докблоков @var для подсказок.
Я сделал это так же, как вы. Большое спасибо за помощь. @ИгорьВ.
Это называется самореференцией. Примеры есть в документации Doctrine ORM. И я думаю, вы хотите отношения
One-To-ManyвместоOne-To-One. doctrine-project.org/projects/doctrine-orm/en/2.6/reference/…