2014-01-31 79 views
0

我按照Symfony-Book中給出的指示來獲取用於在我的數據庫中更新它們的教條的用戶角色關係。 Symfony - User/Role - DoctrineSymfony:具有教義的用戶角色:沒有創建實體或表格

但是,當我通過doctrine:generate:entities更新我的實體時,它只會生成現有的User.php,但不會觸及Role.php。如果我的數據庫中的表格更新爲doctrine:schema:update --force,這不會影響到我。但他們沒有。提到的表格不會被創建。事實上,沒有任何反應。你能幫我麼?我期待着任何好的解決方案。

我user.php的

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Security\Core\User\AdvancedUserInterface; 
use Doctrine\Common\Collections\ArrayCollection; 

/** 
* User 
* 
* @ORM\Table(name="user") 
* @ORM\Entity 
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users") 
*/ 
class User implements AdvancedUserInterface, \Serializable 
{ 
/** 
* @var string 
* 
* @ORM\Column(name="username", type="string", length=255, nullable=false) 
*/ 
private $username; 

/** 
* @var string 
* 
* @ORM\Column(name="password", type="string", length=255, nullable=false) 
*/ 
private $password; 

/** 
* @var string 
* 
* @ORM\Column(name="email", type="string", length=24, nullable=false) 
*/ 
private $email; 

/** 
* @var string 
* 
* @ORM\Column(name="isActive", type="string", length=255, nullable=false) 
*/ 
private $isactive; 

/** 
* @var string 
* 
* @ORM\Column(name="type", type="string", length=10, nullable=false) 
*/ 

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


public function __construct() 
{ 
    $this->isActive = true; 
    $this->roles = new ArrayCollection(); 
    // may not be needed, see section on salt below 
    // $this->salt = md5(uniqid(null, true)); 
}  

public function getSalt() 
{ 
    // you *may* need a real salt depending on your encoder 
    // see section on salt below 
    return null; 
} 

/** 
* 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; 
} 

public function getRoles() 
{ 
    return $this->roles->toArray(); 
} 

/** 
* 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 isactive 
* 
* @param string $isactive 
* @return User 
*/ 
public function setIsactive($isactive) 
{ 
    $this->isactive = $isactive; 

    return $this; 
} 

/** 
* Get isactive 
* 
* @return string 
*/ 
public function getIsactive() 
{ 
    return $this->isactive; 
} 


/** 
* Get id 
* 
* @return integer 
*/ 
public function getId() 
{ 
    return $this->id; 
} 

public function eraseCredentials() 
{ 
} 

/** 
* @see \Serializable::serialize() 
*/ 
public function serialize() 
{ 
    return serialize(array(
      $this->id, 
      $this->username, 
      $this->password, 
      // see section on salt below 
      // $this->salt, 
    )); 
} 

/** 
* @see \Serializable::unserialize() 
*/ 
public function unserialize($serialized) 
{ 
    list (
      $this->id, 
      $this->username, 
      $this->password, 
      // see section on salt below 
      // $this->salt 
    ) = unserialize($serialized); 
} 


/** 
* @var string 
*/ 
private $type; 


/** 
* Set type 
* 
* @param string $type 
* @return User 
*/ 
public function setType($type) 
{ 
    $this->type = $type; 

    return $this; 
} 

/** 
* Get type 
* 
* @return string 
*/ 
public function getType() 
{ 
    return $this->type; 
} 

public function isAccountNonExpired() 
{ 
    return true; 
} 

public function isAccountNonLocked() 
{ 
    return true; 
} 

public function isCredentialsNonExpired() 
{ 
    return true; 
} 

public function isEnabled() 
{ 
    return $this->isActive; 
} 
} 

Role.php:

use Symfony\Component\Security\Core\Role\RoleInterface; 
use Doctrine\Common\Collections\ArrayCollection; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* Role 
* 
* @ORM\Table(name="user_role") 
* @ORM\Entity() 
*/ 
class Role implements RoleInterface 
{ 
/** 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id() 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\Column(name="name", type="string", length=30) 
*/ 
private $name; 

/** 
* @ORM\Column(name="role", type="string", length=20, unique=true) 
*/ 
private $role; 

/** 
* @ORM\ManyToMany(targetEntity="User", mappedBy="roles") 
*/ 
private $users; 

public function __construct() 
{ 
    $this->users = new ArrayCollection(); 
} 

/** 
* @see RoleInterface 
*/ 
public function getRole() 
{ 
    return $this->role; 
} 
} 

回答

0

第一個技巧:讓你的用戶表不同的名稱,如@ORM \表(NAME = 「acme_user」)。

二:添加您的用戶類

/** 
* User's roles. 
* 
* @var ArrayCollection 
* 
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users") 
*/ 
private $roles; 

,並在您角色類

/** 
* @ORM\ManyToMany(targetEntity="User", mappedBy="roles") 
*/ 
private $users; 

@see:http://symfony.com/doc/2.3/cookbook/security/entity_provider.html

+0

謝謝你的建議,但是這沒不解決我的問題 –

相關問題