教义:设置主键
Posted
技术标签:
【中文标题】教义:设置主键【英文标题】: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 【参考方案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
。
【讨论】:
谢谢,但这不是问题,我有注释,只有主键像默认值一样存储。以上是关于教义:设置主键的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 如何添加删除外键主键,以及更新自增属性