设置策略设置为NONE的主键值

时间:2010-11-27 10:14:38

标签: doctrine-orm

我有一个看起来像这样的Entity类:

<?php

namespace Entities;

/** @Entity @Table(name="User") */
class User
{
    /**
     * @Id
     * @Column(type="string", length=12)
     */
    private $no;

基于Doctrine 2标识符生成策略部分:

  

无:告诉学说   标识符被分配(因此   由您的代码生成)。该   任务必须在a之前进行   新实体传递给   EntityManager的#坚持。没有是   离开了   @GeneratedValue完全。

这意味着,我需要一种方法,以便在调用persist之前设置值。

调用./doctrine orm:generate-entities不会生成setter函数,我是否必须在类中手动编写它?

/**
 * Set no
 *
 * @param string $no
 */
public function setNo($no)
{
    $this->no = $no;
}

这是正确的方法吗?

1 个答案:

答案 0 :(得分:3)

没有“正确”的方法来做到这一点。 Generate-entities命令只是一个帮手。没有你必须使用的东西。你可以随意做。

指定策略的唯一要求是,当调用$ em-&gt; persist()时,id字段必须为非null。

例如,在分配ID的情况下,在构造函数中使其成为必需参数是有意义的:

class User
{
    private $no;
    public function __construct($no)
    {
        $this->no = $no;
    }
}