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 :

initialisation BDD existante avec Doctrine [3.x]


Sujet :

Symfony PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2017
    Messages : 2
    Par défaut initialisation BDD existante avec Doctrine
    Bonjour,

    Je débute avec symfony 3. j'ai créé mes premières pages (enfin la structure) et j'en suis au point où je veux intégrer une BDD.
    j'ai donc suivi les tutos disponibles, mai je rencontre un problème que je n'arrive pas à solutionner malgré mes recherches sur les forums et mes essais.
    Mon erreur est certainement d'avoir créer ma base et les tables avant, c'est apparemment plus dur de les intégrer ensuite.
    toujours est il que j'ai bien mes 2 fichiers config.yml et parameters.yml correctement configurés (enfin je crois)
    config.yml:
    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
    # Doctrine Configuration
    doctrine:
        dbal:
            driver: pdo_mysql
            host: '%database_host%'
            port: '%database_port%'
            dbname: '%database_name%'
            user: '%database_user%'
            password: '%database_password%'
            charset: UTF8
            # if using pdo_sqlite as your database driver:
            #   1. add the path in parameters.yml
            #     e.g. database_path: '%kernel.project_dir%/var/data/data.sqlite'
            #   2. Uncomment database_path in parameters.yml.dist
            #   3. Uncomment next line:
            #path: '%database_path%'
     
        orm:
            auto_generate_proxy_classes: '%kernel.debug%'
            naming_strategy: doctrine.orm.naming_strategy.underscore
            auto_mapping: true
    parameters.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # This file is auto-generated during the composer install
    parameters:
        database_host: 127.0.0.1
        database_port: null
        database_name: jdp
        database_user: root
        database_password: null
    Maintenant, de ce que j'ai compris, je devais passer par la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php bin/console doctrine:schema:update --dump-sql
    pour qu'il me génère des requêtes SQL que je peux ensuite valider.
    Le but est d'obtenir un fichier descriptif de ma BDD, avec la description des champs et des liaisons apparemment (si je ne dis pas de conneries )
    Malheureusement cette commande me retourne une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No Metadata Classes to process.
    et là je n'arrive pas à savoir quoi faire. mes différentes recherches m'ont fait vérifier que j'avais bien "auto_mapping: true" dans ma config et d'autres choses, me je n'avance pas.
    J'ai testé avec une autre commande s'il reconnaissait ma BDD, et apparemment il la trouve bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    php bin/console doctrine:database:create
    Could not create database `jdp` for connection named default
    An exception occurred while executing 'CREATE DATABASE `jdp`':
     
    SQLSTATE[HY000]: General error: 1007 Can't create database 'jdp'; database exists
    Auriez vous une idée de comment résoudre mon problème?
    Quelle est la prochaine étape? dois je impérativement générer ce fichier descriptif de ma BDD, ou est ce seulement pour la créer ma BDD et comme elle l'est déjà c'est inutile?

    je vous remercie par avance de votre aide.

    bonne journée.

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    il y a 3 niveaux :

    (1) les fichiers orm.xml qu'on trouve : src/AppBundle/Resources/config/doctrine/........
    c'est ce qu'on appelle les Metadata
    un squelette avec uniquement les champs et rien d'autres

    (2) les entités donc dans /entity
    avec des annotations pour configurer l'entité comme on veut

    (3) et la base de donnée


    Il y a 2 possibilités : pour ton projet soit il existe déjà une base de donnée, soit tu dois la créer.
    les choses vont se dérouler différemment selon le cas.

    si la base existe :

    faut générer les metada : de la base vers ...orm.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     php bin/console doctrine:mapping:import --force AppBundle xml
    à partir des metadata tu génères les entités :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     php bin/console doctrine:mapping:convert annotation ./src


    si la base n'existe pas :

    créer à la main les metadata

    à partir des metadata, tu génères les entités :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     php bin/console doctrine:mapping:convert annotation ./src
    à partir des entités tu génères la base de donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php bin/console doctrine:schema:update --force


    Je dois avouer que dans ce cas, je zappe la création des metadata à la main, j'écris directement les entités.



    pour info, cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php bin/console doctrine:schema:update --dump-sql
    cette commande permet de voir la requête qui va être effectué avant de l’exécuter avec --force

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2017
    Messages : 2
    Par défaut
    Un grand merci, exactement ce que je cherchais.

    je passe en résolu.

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

Discussions similaires

  1. lier une BDD a symfony avec doctrine
    Par pasdechances dans le forum Doctrine2
    Réponses: 0
    Dernier message: 09/02/2016, 14h45
  2. [Débutant] Controle Login avec BDD existante
    Par jerrypeeren dans le forum ASP.NET
    Réponses: 1
    Dernier message: 20/01/2014, 09h07
  3. [2.x] Connexion, authentification avec une bdd existante
    Par edd83 dans le forum Symfony
    Réponses: 51
    Dernier message: 08/02/2013, 16h18
  4. [1.x] importer une base existante avec doctrine
    Par karasnake dans le forum Débuter
    Réponses: 1
    Dernier message: 13/12/2010, 14h53
  5. [1.x] Doctrine BDD existante sans PK
    Par playtime83 dans le forum Symfony
    Réponses: 5
    Dernier message: 29/09/2010, 17h53

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