Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.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
Php 为@ID字段插入空值_Php_Mysql_Symfony_Doctrine Orm_Doctrine - Fatal编程技术网

Php 为@ID字段插入空值

Php 为@ID字段插入空值,php,mysql,symfony,doctrine-orm,doctrine,Php,Mysql,Symfony,Doctrine Orm,Doctrine,我有一个用户对象,我正试图通过条令插入 关键领域是 /** * @ORM\Column(type="integer", name="id") * @ORM\GeneratedValue(strategy="AUTO") */ private $userId; /** * @ORM\Id * @ORM\Column(type="string", name="login_name") */ private $loginName; /** * @ORM\Column(type="st

我有一个用户对象,我正试图通过条令插入

关键领域是

  /**
 * @ORM\Column(type="integer", name="id")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $userId;
/**
 * @ORM\Id
 * @ORM\Column(type="string", name="login_name")
 */
private $loginName;
/**
 * @ORM\Column(type="string", name="display_name") 
 */
private $name;
在控制器代码中,我可以通过对象上的getLoginName()方法回显$loginName字段的值

/**
 * @param mixed $loginName
 */
public function setLoginName($loginName)
{
    $this->loginName = $loginName;
}

/**
 * @return mixed
 */
public function getLoginName()
{
    return $this->loginName;
}
您可以在此处看到执行插入的控制器代码

 if ($request->getMethod() == 'POST') {
        $form->bind($request);
        $login = $form->getData();

        $factory = $this->get('security.encoder_factory');
        echo($login->getLoginName());
        $encoder = $factory->getEncoder($login);
        $login->setPassword($encoder->encodePassword($login->getPassword(), $login->getSalt()));
        $em = $this->getDoctrine()->getManager();
        $em->persist($login);
        $em->flush();

        $this->get('session')->setFlash(
            'success',
            'Account Successfully Created'
        );
但是,当我在实体上调用persist和flush时,login_name字段将“”放入其中(空白)。我不明白为什么该值会被置空(当它作为非唯一值输入时,我将DB设置更改为error)

这个类有关联,但这是主要的,所以我先创建它


有什么想法吗

所以在测试中,我发现不能将generatedValue属性应用于非ID字段。一旦我从userID字段中删除了它(并允许Mysql自己处理),事情又开始起作用了

所以在测试中,我发现不能将generatedValue属性应用于非ID字段。一旦我从userID字段中删除了它(并允许Mysql自己处理),事情又开始起作用了

我不明白你在这里干什么。您希望
table.id
是自动生成的id,但希望
table.login\u name
是主键?因为你就是这样设置的

我个人认为您应该希望
table.id
成为主键,
table.login\u name
是唯一的

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

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

我不明白你在这里干什么。您希望
table.id
是自动生成的id,但希望
table.login\u name
是主键?因为你就是这样设置的

我个人认为您应该希望
table.id
成为主键,
table.login\u name
是唯一的

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

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

为什么不将$userId注释为@Id?因为这是Mysql表中自动生成的Id。要在symfony中使用内置的auth框架,我似乎必须使用登录凭据作为ID。但这与为什么它有一个ID字段有一个值,并且它插入null无关。这不是真的。看看FOSUSerbundle,用户也有一个ID字段,这是@ID。为什么不将$userId注释为@ID?因为这是Mysql表中自动生成的ID。要在symfony中使用内置的auth框架,我似乎必须使用登录凭据作为ID。但这与为什么它有一个ID字段有一个值,并且它插入null无关。这不是真的。看看FOSUSerbundle,用户也有一个ID字段,那就是@ID。