Establecer valor para la tecla Primay con estrategia establecida en ninguno

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

  •  28-09-2019
  •  | 
  •  

Pregunta

Tengo una clase de entidad que se ve así:

<?php

namespace Entities;

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

Basado en la sección de estrategia de generación de identificadores de doctrina 2:

Ninguno: le dice a la doctrina que los identificadores son asignados (y así generados) por su código. La tarea debe tener lugar antes de que se pase una nueva entidad a EntityManager#Persist. Ninguno es lo mismo que dejar el @GeneratedValue por completo.

Eso significa que necesito una forma para poder establecer el valor antes de llamar a Persist.

Vocación ./doctrine orm:generate-entities No generaría una función de setter, ¿tengo que escribirla manualmente en la clase?

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

¿Es esta la forma correcta de hacerlo?

¿Fue útil?

Solución

No hay una forma "correcta" de hacer esto. El comando Generate-Entities es solo un ayudante. Nada que tengas que usar. Puedes hacer lo que quieras.

El único requisito con la estrategia asignada es que el campo de identificación debe ser no nulo cuando se llama $ em-> persist ().

Por ejemplo, en el caso de una ID asignada tiene sentido convertirlo en un parámetro requerido en el constructor:

class User
{
    private $no;
    public function __construct($no)
    {
        $this->no = $no;
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top