Установите значение первичного ключа со стратегией NONE - PullRequest
2 голосов
/ 27 ноября 2010

У меня есть класс Entity, который выглядит следующим образом:

<?php

namespace Entities;

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

На основе раздела «Стратегия создания идентификатора доктрины 2»:

NONE: говорит доктрине, что идентификаторы назначены (и, таким образом, генерируется) вашим кодом. назначение должно иметь место до новый объект передается EntityManager # сохраняются. НЕТ так же, как оставить @GeneratedValue полностью.

Это означает, что мне нужен способ, чтобы я мог установить значение перед вызовом persist.

Вызов ./doctrine orm:generate-entities не сгенерирует функцию установки, нужно ли писать ее вручную в классе?

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

Это правильный способ сделать это?

1 Ответ

3 голосов
/ 27 ноября 2010

Не существует «правильного» способа сделать это. команда Generate-entity - это просто помощник. Ничего, что вы должны использовать. Вы можете делать как вам угодно.

Единственное требование для назначенной стратегии состоит в том, чтобы поле id было ненулевым при вызове $ em-> persist ().

Например, в случае назначенного идентификатора имеет смысл сделать его обязательным параметром в конструкторе:

class User
{
    private $no;
    public function __construct($no)
    {
        $this->no = $no;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...