es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Doctrina no generando ID de entidad

Estoy tratando de crear una entidad, pero obtengo un valor nulo en el id de la entidad, que es un valor generado.

Controlador:

if($buRepository->findOneBy(['buName' => $row['Bu1'], 'dateDeleted' => null]) > null)

elseif($buRepository->findOneBy(['buName' => $row['Bu1'], 'dateDeleted' => null]) === null) 
{
       $bu1 = new Bu();
       $bu1->setBuName($row['Bu1']);
       $bu1->setLastUpdated(new \DateTime('now'));
       $bu1->setDateDeleted(null);
       $bu1->setSrcId(3);
       $bu1->setIdInSource($bu1->getBuId());
}

Entidad:

 /**
     * @var int
     *
     * @ORM\Column(name="bu_id", type="bigint", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $buId;

Una vez que mi entidad intenta guardar, obtengo un error en el buid que dice que no puede ser nulo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema radica en el hecho de que el ID de la entidad está configurado para generarse automáticamente, pero parece que no se está generando cuando se crea la nueva entidad. Esto se puede verificar al mirar la base de datos para ver si el ID realmente se está generando o al revisar los registros para ver si hay algún error o advertencia relacionado con la generación del ID.

    Para solucionar este problema, puede intentar establecer el ID de la entidad explícitamente antes de volcarla, por ejemplo, usando el siguiente código:

    $bu1 = new Bu();
    $bu1->setBuId(uniqid());  // establecer un ID para la entidad
    $bu1->setBuName($row['Bu1']);
    $bu1->setLastUpdated(new \DateTime('now'));
    $bu1->setDateDeleted(null);
    $bu1->setSrcId(3);
    $bu1->setIdInSource($bu1->getBuId());
    

    Alternativamente, puede intentar regenerar el esquema de la base de datos para asegurarse de que la estrategia de generación de ID esté configurada correctamente:

    bin/console doctrine:schema:update --force
    

    Después de probar cualquiera de estas soluciones, debería poder crear y volcar la entidad sin problemas relacionados con el ID.

Comments are closed.