Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony:具有条令的用户角色:未创建实体或表_Symfony_Doctrine - Fatal编程技术网

Symfony:具有条令的用户角色:未创建实体或表

Symfony:具有条令的用户角色:未创建实体或表,symfony,doctrine,Symfony,Doctrine,我按照Symfony手册中给出的说明获取用户角色关系,并在数据库中更新它们。 但是,当我通过原则:generate:entities更新实体时,它只生成现有的User.php,而不涉及Role.php。如果数据库中的表更新为原则:schema:update--force,这就不会困扰我了。但它们没有。所提到的表没有创建。事实上,什么都没有发生。你能帮帮我吗?我期待着任何好的解决办法 myuser.php use Doctrine\ORM\Mapping as ORM; use Symfony\

我按照Symfony手册中给出的说明获取用户角色关系,并在数据库中更新它们。

但是,当我通过
原则:generate:entities
更新实体时,它只生成现有的User.php,而不涉及Role.php。如果数据库中的表更新为
原则:schema:update--force
,这就不会困扰我了。但它们没有。所提到的表没有创建。事实上,什么都没有发生。你能帮帮我吗?我期待着任何好的解决办法

myuser.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;
}
}

第一个提示:为您的用户表指定一个不同的名称,例如@ORM\table(name=“acme\u user”)

第二:添加您的用户类

/**
 * User's roles.
 * 
 * @var ArrayCollection
 * 
 * @ORM\ManyToMany(targetEntity="Role", inversedBy="users")
 */
private $roles;
在你的角色课中

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

@请参阅:

谢谢您的建议,但这并没有解决我的问题