Изучение использования Алисы в сочетании с тестами Behat, и я столкнулся с небольшой проблемой при попытке назначить объекты в отношениях. Я пытаюсь подделать пользователя и роль. Все работает хорошо, пока не указана роль.
Случай очень прост:
Пользователь Объект:
class User implements UserInterface
{
/**
* @var int
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer", nullable=false, options={"unsigned"=true})
*/
private $id;
/**
* @var string
* @ORM\Column(type="string", unique=true, length=255)
*/
private $email;
/**
* @var \Doctrine\Common\Collections\Collection
* @ORM\ManyToMany(targetEntity="CirclicalUser\Entity\Role")
* @ORM\JoinTable(
* name="users_roles",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id")}
* )
*/
private $roles;
}
И затем Роль объект:
class Role implements RoleInterface
{
/**
* @var int
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
* @ORM\Column(type="string", length=255, unique=true, nullable=true)
*/
private $name;
/**
* @var Role
* @ORM\ManyToOne(targetEntity="CirclicalUser\Entity\Role")
*/
private $parent;
}
Мой NELMIO / Алиса YAML выглядит так:
CirclicalUser\Entity\Role:
user:
id: 1
name: 'user'
admin:
id: 2
parent: '@user'
name: 'admin'
Application\Entity\User:
user1:
id: 1
email: 'user@email.com'
roles: ['@admin']
Когда я пытаюсь загрузить приборы, я получаю эту ошибку:
Произошла ошибка при создании осветителя "user1" (Application \ Entity \ User): не удалось гидратировать свойство "role" объекта "user1" (класс: Application \ Entity \ User). (Nelmio \ Alice \ Throwable \ Exception \ Generator \ DebugUnexpectedValueException)
Интересно, если я поменяю отношение role на User с частного на publi c ошибка исчезает Как правильно сохранить конфиденциальность и добиться успеха с этим приспособлением?
Спасибо!