Я новичок в Symfony
, Я пытаюсь войти в систему с ролями пользователей.
Я пытался сделать это с ManyToMany
а затем на getRole
Вернул мне объект. Так что я мог бы получить имя роли пользователя.
$res = array();
foreach ($this->roles as $value) {
$res[] = $value->getRole();
}
Но теперь после переключение с ManyToMany на OneToMany (role.php) & ManyToOne (user.php). Перестал работать. getRole () возвращает число, не название правила.
Где я могу ошибиться? Причина, по которой я не могу этого сделать, состоит в том, что две таблицы не соединяются друг с другом, верно?
Может ли кто-нибудь помочь мне с этим, пожалуйста? Спасибо заранее.
User.php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
*
* @ORM\Table(name="User")
*/
class User implements UserInterface
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(name="use_id", type="integer")
*/
private $id;
/**
* @ORM\Column(name="use_name", type="string", unique=true)
*/
private $username;
/**
* @ORM\Column(name="use_email", type="string", unique=true)
*/
private $email;
/**
* @ORM\Column(name="use_pwd", type="string")
*/
private $password;
/**
* @ORM\Column(name="use_role", type="integer")
* @ORM\ManyToOne(targetEntity="Role", inversedBy="users")
* @ORM\JoinColumn(name="rol_id", referencedColumnName="id")
*/
private $roles;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* 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 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 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 roles
*
* @param integer $roles
*
* @return User
*/
public function setRoles($roles)
{
$this->roles = $roles;
return $this;
}
/**
* Get roles
*
* @return string
*/
public function getRoles()
{
return $this->roles;
}
public function eraseCredentials() {
}
public function getSalt() {
return null;
}
public function serialize() {
return serialize(array(
$this->id,
$this->email,
$this->password
));
}
public function unserialize($serialized) {
list (
$this->id,
$this->email,
$this->password
) = unserialize($serialized);
}
}
Role.php
<?php
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\Role\RoleInterface;
/**
* Role
*
* @ORM\Table(name="Role")
* @ORM\Entity
*/
class Role implements RoleInterface
{
/**
* @var integer
*
* @ORM\Column(name="rol_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="role_name", type="string", length=40)
*/
private $name;
/**
* @ORM\OneToMany(targetEntity="User", mappedBy="roles")
*/
private $users;
public function __construct() {
$this->users = new ArrayCollection();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
*
* @return Role
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Add user
*
* @param \AppBundle\Entity\User $user
*
* @return Role
*/
public function addUser(User $user)
{
$this->users[] = $user;
return $this;
}
/**
* Remove user
*
* @param \AppBundle\Entity\User $user
*/
public function removeUser(User $user)
{
$this->users->removeElement($user);
}
/**
* Get users
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getUsers()
{
return $this->users;
}
/**
* Returns the role.
*
* This method returns a string representation whenever possible.
*
* When the role cannot be represented with sufficient precision by a
* string, it should return null.
*
* @return string|null A string representation of the role, or null
*/
public function getRole()
{
return $this->name;
// TODO: Implement getRole() method.
}
}
Задача ещё не решена.
Других решений пока нет …