мой кошмар дня продолжается …..
после внедрения успешного решения в более раннем потоке, где мне нужно изменить отношения между сущностями, я получаю эту ошибку, когда я пытаюсь зарегистрировать пользователя в приложении:
CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\UndefinedMethodException: "Attempted to call method "getRole" on class "Closure"." at C:\Dropbox\xampp\htdocs\etrack3\src\Ampisoft\Bundle\etrackBundle\Entity\Users.php line 234
Я изменился с отношения manyToMany, на manyToOne / OneToMany между сущностью Users / Roles.
Ive читал, что сериализация может вызвать проблему, но Ive взял ее, и это не имело никакого значения. Остатки сериализации требуемых методов все еще там, поэтому, пожалуйста, игнорируйте (если только они не являются проблемой).
Пожалуйста, может кто-нибудь сказать мне, что я сделал неправильно? Im интересно, если лучше всего отказаться от всех таблиц базы данных и начать снова !!!!
вот класс сущности.
/** * user * * @ORM\Table(name="users") * @ORM\Entity(repositoryClass="Ampisoft\Bundle\etrackBundle\Entity\UsersRepository") */ class Users implements UserInterface { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="username", type="string", length=25, unique=true) */ private $username; /** * @var string * * @ORM\Column(name="password", type="string", length=64) */ private $password; /** * @ORM\Column(name="firstname", type="string", length=25) */ private $firstname; /** * @ORM\Column(name="surname", type="string", length=25) */ private $lastname; /** * @var boolean * * @ORM\Column(name="isActive", type="boolean") */ private $isActive = 1; /** * @var string * * @ORM\Column(name="email", type="string", length=255, unique=true) */ private $email; /** * @var \DateTime * * @ORM\Column(name="lastLogged", type="string") */ private $lastLogged = '-0001-11-30 00:00:00'; /** * @var string; * * @ORM\Column(name="salt", type="string", length=255) */ private $salt; /** * @ORM\ManyToOne(targetEntity="Roles", inversedBy="users") * */ private $roles; /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set Id * * @return integer */ public function setId($id) { $this->id = $id; return $this; } /** * Set username * * @param string $username * @return user */ public function setUsername($username) { $this->username = $username; return $this; } /** * Get username * * @return string */ public function getUsername() { return $this->username; } /** * Set password * * @param string $password * @return user */ public function setPassword($password) { $this->password = $password; return $this; } /** * Get password * * @return string */ public function getPassword() { return $this->password; } /** * Set isActive * * @param boolean $isActive * @return user */ public function setIsActive($isActive) { $this->isActive = $isActive; return $this; } /** * Get isActive * * @return boolean */ public function getIsActive() { return $this->isActive; } /** * Set email * * @param string $email * @return user */ public function setEmail($email) { $this->email = $email; return $this; } /** * Get email * * @return string */ public function getEmail() { return $this->email; } /** * Set lastLogged * * @param \DateTime $lastLogged * @return user */ public function setLastLogged($lastLogged) { $this->lastLogged = $lastLogged; return $this; } /** * Get lastLogged * * @return \DateTime */ public function getLastLogged() { return $this->lastLogged; } public function __construct() { $this->roles = new ArrayCollection(); $this->isActive = true; } /** * @inheritDoc */ public function getRoles() { $roles = array(); foreach ($this->roles as $role) { $roles[] = $role->getRole(); } return $roles; } /** * @param $roles * @return $this */ public function setRoles($roles) { $this->roles = $roles; return $this; } /** * @inheritDoc */ public function eraseCredentials() { } /** * @inheritDoc */ public function getSalt() { return $this->salt; } public function setSalt($salt) { $this->salt = $salt; return $this; } public function isAccountNonExpired() { return true; } public function isAccountNonLocked() { return true; } public function isCredentialsNonExpired() { return true; } public function isEnabled() { return $this->isActive; } /** * Add roles * * @param \Ampisoft\Bundle\etrackBundle\Entity\Roles $roles * @return users */ public function addRoles(Roles $roles) { $this->roles[] = $roles; return $this; } /** * Remove roles * * @param \Ampisoft\Bundle\etrackBundle\Entity\Roles $roles */ public function removeRoles(Roles $roles) { $this->roles->removeElement($roles); } /** * Set firstname * * @param string $firstname * @return users */ public function setFirstname($firstname) { $this->firstname = $firstname; return $this; } /** * Get firstname * * @return string */ public function getFirstname() { return $this->firstname; } /** * Set lastname * * @param string $lastname * @return users */ public function setLastname($lastname) { $this->lastname = $lastname; return $this; } /** * Get lastname * * @return string */ public function getLastname() { return $this->lastname; } /** * @see \Serializable::serialize() */ /** * Serializes the content of the current User object * @return string */ public function serialize() { return \json_encode( array($this->username, $this->password, $this->salt, $this->roles, $this->id)); } /** * Unserializes the given string in the current User object * @param serialized */ public function unserialize($serialized) { list($this->username, $this->password, $this->salt, $this->roles, $this->id) = \json_decode( $serialized); } }
обновление 1, это сработало, но создало новую ошибку. Я собираюсь переместить ее на новый вопрос, когда таймер почты позволяет мне.
Catchable Fatal Error: Argument 4 passed to Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::__construct() must be of the type array, object given, called in C:\Dropbox\xampp\htdocs\etrack3\vendor\symfony\symfony\src\Symfony\Component\Security\Core\Authentication\Provider\UserAuthenticationProvider.php on line 96 and defined