Imposta il valore per la chiave Primay con la strategia impostata su nessuno
-
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?
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;
}
}