Доктрина Symfony проверить правильность отношений сущностей - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть две сущности Пользователь и Устройство с двунаправленной связью «один ко многим».

проблема в том, когда я запускаю эту команду

php bin/console doctrine:schema:validate

Я получаю

* The association App\Entity\User#devices refers to the owning side field App\Entity\Device#user which is not defined as the association, but as the field.

* The association App\Entity\User#devices refers to the owning side field App\Entity\Device#user which does not exist.

Пользователь Сущность

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

/**
 * @ORM\OneToMany(targetEntity="Device", mappedBy="user")
 */
private $devices;

Устройство Сущность

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


/**
 * @ORM\Column(type="integer",name="user_id")
 * @ORM\ManyToOne(targetEntity="User", inversedBy="devices")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true)
 */
private $user;

1 Ответ

0 голосов
/ 25 апреля 2018

Да, вы должны определить пользователя как association not as a field в таблице базы данных.

Ваш объект устройства должен выглядеть следующим образом:

/**
 * @ORM\ManyToOne(targetEntity="User", inversedBy="devices")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true)
 */
private $user;

Поле с именем user не должно бытьв вашей таблице он автоматически сгенерирует поле с именем user_id.Вам не нужно добавлять его вручную.

Для получения дополнительной информации см. Ассоциации доктрин Symfony .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...