Frage

Ich habe eine Entitätsklasse, die so aussieht:

<?php

namespace Entities;

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

Basierend auf der Strategieabschnitt "Doctrine 2 Identifier Generation":

Keine: Lehre die Lehre, dass die Kennungen von Ihrem Code zugewiesen (und somit generiert) werden. Die Aufgabe muss stattfinden, bevor eine neue Einheit an entityManager#bestehen wird. Keiner ist das gleiche wie das Ablassen des @generatedValue vollständig.

Das heißt, ich brauche einen Weg, damit ich den Wert festlegen kann, bevor ich persist aufruft.

Berufung ./doctrine orm:generate-entities Würde ich keine Setterfunktion generieren, muss ich sie manuell in der Klasse schreiben?

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

Ist dies der richtige Weg, dies zu tun?

War es hilfreich?

Lösung

Es gibt keinen "richtigen" Weg, dies zu tun. Der Befehl für Erzeugungsunternehmen ist nur ein Helfer. Nichts, was Sie verwenden müssen. Sie können tun, was Sie möchten.

Die einzige Anforderung mit der zugewiesenen Strategie ist, dass das ID-Feld nicht null sein muss, wenn $ em-> persist () aufgerufen wird.

Zum Beispiel ist es bei einer zugewiesenen ID sinnvoll, es zu einem erforderlichen Parameter im Konstruktor zu machen:

class User
{
    private $no;
    public function __construct($no)
    {
        $this->no = $no;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top