IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Problème lors d'un preRemove


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2016
    Messages : 28
    Par défaut Problème lors d'un preRemove
    Bonjour,

    J'essaie de faire un remove dans un EventListenner et j'ai toujours la même erreur'
    Il n'y a pas de relation entre les deux tables...je sais pas propre mais c'est comme ça.

    En gros une table couleur, et une table couleurToProduit. Du coup, lorsque je supprime une couleur, j'aimerais supprimer les associations dans couleurToProduit.

    Mon listenner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <?php
    namespace Cuisine\AppBundle\Entity\Listener;
     
    use Doctrine\ORM\Event\LifecycleEventArgs;
    use Cuisine\AppBundle\Entity\Couleur;
    use Cuisine\AppBundle\Entity\CouleursToProduit;
     
    class CouleurListener
    {
     
        public function preRemove(LifecycleEventArgs $event)
        {
     
        	$entity = $event->getEntity();
     
        	$em = $event->getEntityManager()->getRepository('CuisineAppBundle:CouleursToProduit');
     
      		$results = $em->findByCouleurId($entity->getId());
     
      		foreach ($results as $result) {
     
      			if ($result instanceOf CouleursToProduit) {
      				$em->remove($result);
      				$em->flush();
      			}
      		}
     
        }
    }
    L'erreur obtenue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Undefined method 'remove'. The method name must start with either findBy or findOneBy!
    Je me casse la tête dessus depuis 3 jours. Si quelqu'un a une idée, une solution je suis preneur

    Merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $results = $em->findByCouleurId($entity->getId());
    est erroné bien sur .
    des exemples ici
    si ton est defini ailleurs ,montre nous comment tu fais






    Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2016
    Messages : 28
    Par défaut
    Il est défini dans un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CouleursToProduitRepository.php
    le code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <?php
     
    namespace Cuisine\AppBundle\Entity;
     
    use Doctrine\ORM\EntityRepository;
    use Cuisine\AppBundle\Entity\CouleursToProduit;
     
     
    class CouleursToProduitRepository extends EntityRepository
    {
     
    	public function findByProduitId($produit_id){
     
    		$query = $this->_em->createQuery(
    		    'SELECT c
    		    FROM CuisineAppBundle:Couleur c
    		    WHERE c.produit_id = :produit_id'
    		)->setParameter(":produit_id", $produit_id);
     
    		$products = $query->getResult();
    		return $products;
    	}
     
    	public function findByCouleurId($couleur_id){
     
    		$query = $this->_em->createQuery(
    		    'SELECT cp
    		    FROM CuisineAppBundle:CouleursToProduit cp
    		    WHERE cp.couleur_id = :couleur_id'
    		)->setParameter(":couleur_id", $couleur_id);
     
    		$products = $query->getResult();
    		return $products;
    	}
     
    }

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2016
    Messages : 28
    Par défaut
    Je viens d'essayer en changeant par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <?php
    namespace Cuisine\AppBundle\Entity\Listener;
     
    use Doctrine\ORM\Event\LifecycleEventArgs;
    use Cuisine\AppBundle\Entity\Couleur;
    use Cuisine\AppBundle\Entity\CouleursToProduit;
     
    class CouleurListener
    {
     
        public function preRemove(LifecycleEventArgs $event)
        {
     
        	$entity = $event->getEntity();
     
        	$em = $event->getEntityManager()->getRepository('CuisineAppBundle:CouleursToProduit');
     
      		$results = $em->findBy(array("couleurId" => $entity->getId()));
     
      		foreach ($results as $result) {
     
      			$em->remove($result->getId());
      			$em->flush();
      		}
        }
    }
    et toujours le même problème

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    un petit changement peu résoudre le problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $em = $event->getEntityManager()->getRepository('CuisineAppBundle:CouleursToProduit');
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $em = $args->getEntityManager();



    Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    Une discussion est terminée ? Alors le bouton est votre ami !

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2016
    Messages : 28
    Par défaut
    En faisant comme cela j'ai une erreur 500 tout de suite après, avec le findBy, comme si il ne trouvait plus la table CouleursToProduit

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème lors d'encodage dans un Maskedit
    Par panthere6 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/06/2004, 06h35
  2. Problème lors d'un Update sur une date
    Par Nany dans le forum ASP
    Réponses: 3
    Dernier message: 19/05/2004, 22h37
  3. Problème lors du EXTEND d'un tableau
    Par banana31 dans le forum Oracle
    Réponses: 14
    Dernier message: 10/02/2004, 10h58
  4. Problème lors du chargement
    Par carlito dans le forum Flash
    Réponses: 26
    Dernier message: 06/01/2004, 15h21
  5. Réponses: 2
    Dernier message: 17/08/2003, 20h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo