Php Symfony 3.0。注意:未定义索引:name

Php Symfony 3.0。注意:未定义索引:name,php,doctrine-orm,symfony,Php,Doctrine Orm,Symfony,我有两个实体。用户和用户权限,由多通单向关联映射。当我尝试创建一个具有特定用户权限的新用户时(在表中创建之前并且已经存在),我得到了错误“注意:在第670行的vendor\doctor\orm\lib\doctor\orm\Persisters\Entity\BasicEntityPersister.php中未定义的索引:name(…)”。以下是我的实体: 使用者 用户权限: /** * @ORM\Entity(repositoryClass = "AppBundle\Repository\U

我有两个实体。用户和用户权限,由多通单向关联映射。当我尝试创建一个具有特定用户权限的新用户时(在表中创建之前并且已经存在),我得到了错误“注意:在第670行的vendor\doctor\orm\lib\doctor\orm\Persisters\Entity\BasicEntityPersister.php中未定义的索引:name(…)”。以下是我的实体:

使用者

用户权限:

/**
 * @ORM\Entity(repositoryClass = "AppBundle\Repository\UserRightsRepository")
 * @ORM\Table(name = "user_rights")
 */
 class UserRights
 {
     /**
      * @ORM\Column(type = "integer")
      * @ORM\Id
      * @ORM\GeneratedValue(strategy = "AUTO")
      */
     protected $id;

     /**
      * @ORM\Column(type = "string", length = 20, unique = TRUE)
      */
     protected $name;
控制器:

/**
* @Route("/create/user", name="create/user")
*/
public function createUserAction()
{             
    $em = $this->getDoctrine()->getManager();   
    $userRights = $em->getRepository('AppBundle:UserRights')->findOneByName('Admin');   
    $department = $em->getRepository('AppBundle:Departments')->findOneByName('CN');   

    $user = new Users();
    $user->setId('josm');
    $user->setName('John');
    $user->setSurname('Smith');
    $user->setEmail('cos@gmail.com');
    $user->setIsActive(TRUE);
    $user->setUserRights($userRights);
    $user->setDepartment($department);

    $em->persist($user);
    $em->flush();

    return new Response(dump($user));
}
使用dump($user)时,一切看起来都很好。当我尝试使用persist+flush将新创建的用户放入数据库时,问题就开始了


考虑到语法,没有错误,所以我认为我在这里做错了什么。我假设这里的问题是关联或
unique=true
。我读过很多主题,几乎所有的主题都是关于错误的语法-产品而不是产品,客户而不是客户等。我检查了几次拼写,我确信它是正确的。

好的。我已将
referencedColumn=“name”
更改为
referencedColumn=“id”
,并使用了条令:schema:update--force命令,它成功了。但是,我希望在我的用户表中将管理员、用户等而不是1、2等视为用户权限。知道如何解决此问题吗?请尝试将
$name
标记为
@ORM\Id
,因为据我所知,条令要求引用的列是标识符。它现在可以工作了,但是,symfony希望我在创建依赖项或用户权限时也设置Id,尽管我已将它们标记为“自动”。我不知道为什么会发生这种情况。也许数据库没有正确配置以生成标识符?尝试发布您收到的特定错误,也可以根据您的数据库尝试
IDENTITY
/
SEQUENCE
而不是
AUTO
/**
* @Route("/create/user", name="create/user")
*/
public function createUserAction()
{             
    $em = $this->getDoctrine()->getManager();   
    $userRights = $em->getRepository('AppBundle:UserRights')->findOneByName('Admin');   
    $department = $em->getRepository('AppBundle:Departments')->findOneByName('CN');   

    $user = new Users();
    $user->setId('josm');
    $user->setName('John');
    $user->setSurname('Smith');
    $user->setEmail('cos@gmail.com');
    $user->setIsActive(TRUE);
    $user->setUserRights($userRights);
    $user->setDepartment($department);

    $em->persist($user);
    $em->flush();

    return new Response(dump($user));
}