2010-11-27 32 views
2

J'ai une classe entité qui ressemble à ceci:Régler la valeur de la clé primay avec la stratégie définie sur NONE

<?php 

namespace Entities; 

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

Sur la base de la doctrine 2 Identifier la section Stratégie de production:

NONE: Indique Doctrine que les identifiants sont attribués (et donc générés) par votre code. L'affectation doit avoir lieu avant qu'une entité soit transmise à EntityManager # persist. NONE est le de la même manière que de laisser le @GeneratedValue entièrement.

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

L'appel ./doctrine orm:generate-entities ne génèrerait pas de fonction 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?

Répondre

3

Il n'existe pas de méthode "correcte" pour cela. la commande Generate-entities est juste une aide. Rien que vous devez utiliser. Vous pouvez faire ce que vous voulez. La seule exigence avec la stratégie assignée est que le champ id doive être non nul lorsque $ em-> persist() est appelé.

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

class User 
{ 
    private $no; 
    public function __construct($no) 
    { 
     $this->no = $no; 
    } 
} 
+0

Merci, cela m'a aidé! –