Imposta il valore per la chiave Primay con la strategia impostata su nessuno

StackOverflow https://stackoverflow.com/questions/4291120

  •  28-09-2019
  •  | 
  •  

Domanda

Ho una lezione di entità che assomiglia a questa:

<?php

namespace Entities;

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

Basato sulla sezione strategia di generazione dell'identificatore di dottrina 2:

Nessuno: dice alla dottrina che gli identificatori sono assegnati (e quindi generati) dal codice. L'incarico deve avvenire prima che una nuova entità venga passata a EntityManager#persiste. Nessuno è uguale a quello di lasciare del tutto @GeneratedValue.

Ciò significa che ho bisogno di un modo in modo da poter impostare il valore prima di chiamare persistere.

Chiamata ./doctrine orm:generate-entities Non generare una funzione setter, devo scriverla manualmente in classe?

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

È questo il modo corretto per farlo?

È stato utile?

Soluzione

Non esiste un modo "corretto" per farlo. Il comando di generazione di generi è solo un aiutante. Niente che devi usare. Puoi fare come per favore.

L'unico requisito con la strategia assegnata è che il campo ID deve essere non nullo quando viene chiamato $ em-> persist ().

Ad esempio nel caso di un ID assegnato ha senso renderlo un parametro richiesto nel costruttore:

class User
{
    private $no;
    public function __construct($no)
    {
        $this->no = $no;
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top