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 :

requête INSERT avec doctrine


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2017
    Messages : 90
    Points : 65
    Points
    65
    Par défaut requête INSERT avec doctrine
    Bonjour a tous,
    Je suis sur un projet sous symfony4'
    J'ai fait une application de gestion d'adhérent d'association.
    Jusqu'à maintenant lorsque je voulais mettre a jour ma liste d'adhérent avec un fichier csv je le faisais directement dans phpMyAdmin. J'ai une table intermédiaire que j'ai appelé 'import_csv'. J'importe mon fichier csv sur cette table et grâce a deux requêtes j'ajoute et j'update ma liste d'adhérent. Mais je voudrais créer une interface d'administration pour faire la même chose.
    Je suis arrivé a créer la gestion d'importation de mon fichier csv sur ma table intermédiaire.
    Je voudrais transcrire mes requêtes SQL dans mon Controller Symfony et c'est la que je bloque.
    Ma première requête SQL pour ajouter nouveaux adhérents se trouvant sur ma table:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO adherent
    (last_name,first_name,to_number,born)
     
    SELECT
    import_csv.last_name,import_csv.first_name,iimport_csv.to_number,import_csv.born
    FROM inter LEFT JOIN adherent ON import_csv.to_number=adherent.to_number
    WHERE adherent.to_number IS NULL
    J'ai essayé pas mal de chose mais je n'y arrive pas:
    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
    /**
         * @Route("import/insert", name="import_insert")
         */
    public function import_insert(ObjectManager $manager)
    {
     
        $qb = $manager->createQueryBuilder();
        $qb ->select('import_csv.last_name,import_csv.first_name,import_csv.to_number,import_csv.born')
            ->from('\App\Entity\Import_csv','i')
            ->leftjoin('\App\Entity\Adherent on i.to_number=a.to_number','a')
            ->where('a.to_number IS NULL');
     
            $adherent = new \App\Entity\Adherent();
     
            $manager->persist($adherent);
            $manager->flush();
     
        return $this->redirectToRoute('import_csv');
    }
    Je vous remercie de l'aide que vous pourriez m'apporter.

  2. #2
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2017
    Messages : 90
    Points : 65
    Points
    65
    Par défaut
    C'est bon j'ai trouvé. Je mets la solution cela peut aider quelqu'un.
    Je suis passé par la couche sous-jacente à l'ORM, la DBAL (pour Database Abstraction Layer) qui permet entre autres des requêtes natives.

    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
     
    ...
    use App\Entity\ImportCsv;
    use Doctrine\DBAL\Driver\Connection;
    ...
    /**
         * @Route("import/insert", name="import_insert")
         */
    public function import_insert(Connection $connection): Response
    {
     
        $connection->exec('INSERT INTO adherent
        (last_name,first_name,to_number,born)
     
        SELECT
        import_csv.last_name,import_csv.first_name,import_csv.to_number,import_csv.born
        FROM import_csv LEFT JOIN adherent ON import_csv.to_number=adherent.to_number
        WHERE adherent.to_number IS NULL');
     
     
        return $this->redirectToRoute('import_csv');
    }

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

Discussions similaires

  1. requête insert avec boucle ?
    Par Kropernic dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/09/2008, 15h24
  2. Requête Insertion avec un TQuery
    Par delphino7 dans le forum Bases de données
    Réponses: 44
    Dernier message: 29/03/2008, 15h16
  3. Pb Requête INSERT avec QBE
    Par jubi73 dans le forum Paradox
    Réponses: 4
    Dernier message: 04/09/2007, 15h20
  4. Requête INSERT avec 2 requêtes sélection (2 tables)
    Par JiB@ dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/02/2007, 16h31
  5. Requête : Insert avec plusieurs tables
    Par bleu_ciel dans le forum Access
    Réponses: 4
    Dernier message: 01/06/2006, 21h42

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