Définir la valeur de la clé Primay avec la stratégie définie sur aucun

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

  •  28-09-2019
  •  | 
  •  

Question

J'ai un cours d'entité qui ressemble à ceci:

<?php

namespace Entities;

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

Basé sur la section de stratégie de génération d'identification de la doctrine 2:

Aucun: dit à la doctrine que les identifiants sont attribués (et donc générés) par votre code. L'affectation doit avoir lieu avant qu'une nouvelle entité ne soit transmise à EntityManager # persiste. Aucune n'est la même que de laisser entièrement @GeneratedValue.

Cela signifie que j'ai besoin d'un moyen pour que je puisse définir la valeur avant d'appeler persister.

Appel ./doctrine orm:generate-entities Ne générerait pas de fonction de setter, dois-je l'écrire manuellement dans la classe?

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

Est-ce la bonne façon de le faire?

Était-ce utile?

La solution

Il n'y a pas de moyen "correct" de le faire. La commande générate-entités n'est qu'un aide. Rien que vous avez à utiliser. Vous pouvez faire ce que vous voulez.

La seule exigence avec la stratégie attribuée est que le champ ID doit être non nul lorsque $ em-> persist () est appelé.

Par exemple, dans le cas d'un ID attribué, il est logique d'en faire un paramètre requis dans le constructeur:

class User
{
    private $no;
    public function __construct($no)
    {
        $this->no = $no;
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top