Symfony:我无法存储主键值

时间:2013-12-18 15:17:24

标签: php database symfony doctrine-orm doctrine

我有一个问题,我有一个表(下载),有两个字段:令牌(主键)和值。

我的实体下载使用这些方法(仅显示令牌方法,值正常工作):

/**
 * @var string
 *
 * @ORM\Column(name="token", type="string", length=45, nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
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;
}

但是,当我在我的控制器中执行此操作时:

$em = $this->getDoctrine()->getManager();
$Download = new Downloads();
        $Download->setToken($token);       
        $Download->setValid($now); 
$em->persist($Download); 
$em->flush();

对象创建得很好,但在我的数据库中有效存储正确,而令牌存储为空!!

如果我看到值,util $ em-> flush();对象下载有两个正确的值,但在此之后,令牌(主键)消失了他的值。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

尝试删除@ORM \ GeneratedValue (strategy =“IDENTITY”)因为它是导致doctrine为Token生成值的那个。 希望它有所帮助:)

答案 1 :(得分:0)

你必须像这样为你的列创建自动增量

 /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

答案 2 :(得分:0)

愚蠢的回答,但你试过了吗?

  • 清除Symfony缓存
  • 重新启动Apache

它可能与Doctrine缓存有关。