Partage
  • Partager sur Facebook
  • Partager sur Twitter

SYMFONY 7 make migration

SYMFONY 7 make migration

    30 mars 2024 à 17:25:54

    Bonjour à tous

    J'ai un souci au niveau de mon entity User qui est en OneToMany avec mon entity movies.
    Quand je fait un make migration suivie de doctrine:migrations:migrate j'ai ces erreurs :

    • An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child
      row: a foreign key constraint fails (cinema.#sql-201c_87, CONSTRAINT FK_1D5EF26FA76ED395 FOREIGN KEY (user_id) REFERENCES
      user (id))

      • SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (cinema.`

        sql-201c_87, CONSTRAINTFK_1D5EF26FA76ED395FOREIGN KEY (user_id) REFERENCESuser(id`))
      • SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (cinema.`

        sql-201c_87, CONSTRAINTFK_1D5EF26FA76ED395FOREIGN KEY (user_id) REFERENCESuser(id`))

    Mon entity User

    #[ORM\OneToMany(targetEntity: Movie::class, mappedBy: "user")] // Relation avec la "private $user;" de l'entity Movie
        private $movies;
    
        /**
         * @return Collection|Movie[]
         */
        public function getMovies(): Collection
        {
            return $this->movies;
        }
    
        public function addMovie(Movie $movie): self
        {
            if (!$this->movies->contains($movie)) {
                $this->movies[] = $movie;
                $movie->setUser($this);
            }
    
            return $this;
        }
    
        public function removeMovie(Movie $movie): self
        {
            if ($this->movies->removeElement($movie)) {
                // set the owning side to null (unless already changed)
                if ($movie->getUser() === $this) {
                    $movie->setUser(null);
                }
            }
    
            return $this;
        }

    Mon entity Movie.php 

    #[ORM\ManyToOne(targetEntity: User::class, inversedBy: "movies")] // Relation avec la "private $movies;" de l'entity User
        #[ORM\JoinColumn(nullable: false)]
        private $user;
    
        public function getUser(): ?User
        {
            return $this->user;
        }
    
        public function setUser(?User $user): self
        {
            $this->user = $user;
    
            return $this;
        }

    Dans ma table movie j'ai bien user_id .

    Voilà peut être que vous verrez le soucis , mais la je bloque .... , j'ai déjà fait des relations avec plusieurs entity sans aucun soucis ...

    Voila le github du projet : https://github.com/xavgdt66/Cin-ma/commits/main/



    • Partager sur Facebook
    • Partager sur Twitter
      31 mars 2024 à 0:00:17

      Salut

      Ce genre de message, c'est soit parce qu'on tente d'insérer des valeurs qui ne sont effectivement pas valides (valeur nulle aussi), soit parce qu'il y en a déjà et elles ne le sont pas. Dans l'idée, regarde si tu ne tentes pas d'insérer des films pour des utilisateurs qui ne sont pas ou plus existants. Fais aussi attention aux valeurs d'auto-incrément qui peuvent changer malgré les suppressions de données.

      • Partager sur Facebook
      • Partager sur Twitter
        31 mars 2024 à 14:08:45

        Salut , quand tu me parle d'insérer tu me via un formulaire ? 

        Car la je ne submit rien j'essaye juste de faire un make migration 

        J'ai supprimer toute ma bdd et cela fonctionne ... 

        • Partager sur Facebook
        • Partager sur Twitter
          3 avril 2024 à 13:08:35

          Je te d'insertion en base, la provenance des données importe peu, que ce soit une migration ou la soumission d'un formulaire.

          En général, fais attention quand tu insères des données dans une base existante, et que ces données ont des liens entre elles. Forcément, les différents environnements ayant leur propre vie, les IDs ne sont pas toujours les mêmes, ce qui cause évidemment problème pour les clés étrangères. Tu devrais pouvoir t'en sortir avec des INSERT INTO … (…) VALUES (…, (SELECT … FROM … WHERE …), …), donc en utilisant une sous-requête SELECT dans une requête d'insertion (pourrait à mon sens fonctionner pour une mise à jour aussi).

          • Partager sur Facebook
          • Partager sur Twitter

          SYMFONY 7 make migration

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown