2

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

<?php

namespace Entities;

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

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

NONE:告诉 Doctrine 标识符是由您的代码分配(并因此生成)的。必须在将新实体传递给 EntityManager#persist 之前进行分配。NONE 与完全不使用 @GeneratedValue 相同。

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

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

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

这是正确的方法吗?

4

1 回答 1

3

没有“正确”的方法可以做到这一点。Generate-entities 命令只是一个助手。没有什么是你必须使用的。你可以随心所欲。

分配策略的唯一要求是,调用 $em->persist() 时 id 字段必须为非空。

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

class User
{
    private $no;
    public function __construct($no)
    {
        $this->no = $no;
    }
}
于 2010-11-27T19:11:32.927 回答