我想设置id手册我在我的Test实体中编写这段代码:
我可以像我的代码一样使用setId()吗?
我的代码在这里:
/**
* Test
* @ORM\Table(name="test")
*/
class Test
{
/**
* @var int
* @ORM\Column(name="id", type="integer")
*/
private $id;
/**
* @var string
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* Set id
* @param integer $id
* @return Test
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* Get id
* @return integer
*/
public function getId()
{
return $this->id;
}
// other methods
}
这是设置ID的正确方法吗? 如果不是正确和标准的方式?
答案 0 :(得分:5)
您可以使用自己的主键,告诉教义不要产生值...
/**
* Test
* @ORM\Table(name="test")
*/
class Test
{
/**
* @var int
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\Column(name="id", type="integer")
*/
private $id;
/**
* Set id
* @param integer $id
* @return Test
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
在持久之前不要忘记setId!
答案 1 :(得分:2)
Doctrine希望在将实体持久化/刷新到数据库(或从数据库中获取)之后,实体的主键是不可变的(不可更改的)。
您编写的代码在PHP方面完全正确,但如果您使用setId()
,很可能会破坏教义功能。
如果您对内部感兴趣,请查看" Doctrine身份地图"