Setzen Sie den Wert für den Primay -Schlüssel mit Strategie auf keine
-
28-09-2019 - |
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?
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;
}
}