【问题标题】:Doctrine: Set primary Key教义:设置主键
【发布时间】:2013-12-19 10:01:50
【问题描述】:

我有一个包含一些字段的表,第一个是我的主键,称为 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;
    }

【问题讨论】:

  • 您是否尝试使用 @GeneratedValue(strategy="CUSTOM") 和 @ORM\CustomIdGenerator(class="App\Entity\YourOwnGenerator") 使用自己的 AbstractIdGenerator?见link

标签: php database symfony orm doctrine-orm


【解决方案1】:

试试ORM\GeneratedValue

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

【讨论】:

    【解决方案2】:

    也许这可以帮助Doctrine2 Primary Key

    如果您没有使用doctrine 命令创建表,请检查您的数据库中的$token 是否设置为Primary Key

    【讨论】:

    • 谢谢,但这不是问题,我有注释,只有主键像默认值一样存储。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多