Symfony / Doctrina materializada Cuestiones de ruta

He seguido a los doctores:

https://github.com/Atlantic18/DoctrineExtensions/blob/v2.4.x/doc/tree.md#materialized-path

Estoy recibiendo el siguiente error:

 An exception occurred while executing 'UPDATE task SET path = ?, task_id = ?, lvl = ? WHERE id = ?' with params ["-1", "-1", 0, 1]:  
                                                                                                                                       
  SQLSTATE[22003]: Numeric value out of range: 1264 Out of range value for column 'task_id' at row 1     

Aquí está mi entidad:

php

namespace App\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * @ORM\Entity(repositoryClass="Gedmo\Tree\Entity\Repository\MaterializedPathRepository")
 * @Gedmo\Tree(type="materializedPath")
 */
class Task
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer", options={"unsigned":true})
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=128, nullable=false)
     */
    private $title;

    /**
     * @ORM\Column(type="integer", nullable=true)
     * @Gedmo\TreeLevel
     */
    private $lvl;

    /**
     * @ORM\Column(type="integer", nullable=true)
     * @Gedmo\TreeLeft
     */
    private $lft;

    /**
     * @ORM\Column(type="integer", nullable=true)
     * @Gedmo\TreeRight
     */
    private $rgt;

    /**
     * @ORM\Column(type="string", nullable=true)
     * @Gedmo\TreePath(separator=".", startsWithSeparator=false, endsWithSeparator=false)
     */
    private $path;

    /**
     * @ORM\Column(type="string", nullable=true)
     * @Gedmo\TreePathSource
     */
    private $source;

    /**
     * @ORM\OneToMany(targetEntity="App\Entity\Task", mappedBy="parent")
     * @ORM\OrderBy({"lft":"ASC"})
     */
    private $children;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Task")
     * @ORM\JoinColumn(name="task_id", referencedColumnName="id", onDelete="CASCADE")
     * @Gedmo\TreeRoot
     */
    private $root;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Task", inversedBy="children")
     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE")
     * @Gedmo\TreeParent
     */
    private $parent;

}

¿Qué no estoy entendiendo o qué estoy perdiendo sobre la configuración para el camino materializado?

¿Por qué la identificación del nodo aparece como negativa también? Muy extraño...

Pregunta hecha hace 3 años, 4 meses, 26 días - Por techtrailblazer


2 Respuestas:

  • El error que estás recibiendo indica que estás tratando de insertar un valor fuera del rango permitido para la columna 'taskid'. En tu consulta SQL, estás intentando establecer el valor de 'taskid' como "-1", lo cual está causando el error de valor fuera de rango.

    En cuanto a por qué la identificación del nodo aparece como negativa, esto puede estar relacionado con la configuración de la estrategia de árbol materializado que estás utilizando. Por defecto, la estrategia de árbol materializado en Doctrine considera que el valor "-1" representa el nodo raíz. Sin embargo, parece que en tu caso esa configuración no está funcionando como se esperaba.

    Para solucionar este problema, te recomendaría revisar la configuración de tu entidad Task y asegurarte de que la estrategia de árbol materializado está correctamente implementada. También podrías revisar si hay alguna configuración adicional necesaria para establecer correctamente el nodo raíz y evitar la inserción de valores fuera de rango en las columnas de la tabla.

    Además, asegúrate de que estás siguiendo todas las recomendaciones y mejores prácticas en la documentación de DoctrineExtensions para la estrategia de árbol materializado. Puedes revisar nuevamente la documentación mencionada para verificar si estás realizando la configuración de manera correcta.

    Si continúas teniendo problemas, puedes intentar revisar el código que alimenta la carga de datos en las entidades para asegurarte de que se están asignando los valores correctamente antes de intentar ejecutar la consulta de actualización en la base de datos.

    Espero que esta información te sea útil para resolver tu problema con la configuración de la estrategia de árbol materializado en Symfony y Doctrine. ¡Déjame saber si necesitas más ayuda!

    Respondida el Dec 21, 2020 a las 21:50 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

    • </strong>/
    蔦Pr

    Respondida el Dec 21, 2020 a las 21:50 - por Gemini

    Votos positivos: 0 | Votos negativos: 0