Php 原则:设置主键

Php 原则:设置主键,php,database,symfony,orm,doctrine-orm,Php,Database,Symfony,Orm,Doctrine Orm,我有一个带有一些字段的表,第一个字段是我的主键,名为token 我需要那个标记不是自动的,所以,我想设置这个值。比如说, $em = $this->getDoctrine()->getManager(); $object->setToken("first"); $object->setValue("123"); $em->persist($object); $em->flush(); 但是,在我的数据库中,令牌总是nu

我有一个带有一些字段的表,第一个字段是我的主键,名为
token

我需要那个标记不是自动的,所以,我想设置这个值。比如说,

$em = $this->getDoctrine()->getManager();
$object->setToken("first");
$object->setValue("123");
$em->persist($object);
$em->flush();
但是,在我的数据库中,令牌总是
null
,为什么

当我刷新时,标记值消失

在我的实体中,令牌声明为:

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

    /**
     * Set token
     *
     * @param string $token
     * @return Downloads
     */
    public function setToken($token)
    {
        $this->token = $token;
    
        return $this;
    }

    /**
     * Get token
     *
     * @return string 
     */
    public function getToken()
    {
        return $this->token;
    }
也许这会有帮助


如果您没有使用
原则
命令创建表,请检查数据库中
$token
是否设置为
主键

尝试使用
ORM\GeneratedValue

/**
 * @var string
 *
 * @ORM\Column(name="token", type="string", length=45, nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="NONE")
 */
private $token;

谢谢,但这不是问题,我有注释,只有primari键像默认值一样存储。您是否尝试使用@GeneratedValue(strategy=“CUSTOM”)和@ORM\CustomIdGenerator(class=“App\Entity\YourOwnGenerator”)使用您自己的AbstractIdGenerator?看见