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 :

Doctrine BDD existante sans PK [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut Doctrine BDD existante sans PK
    Bonjour à tous.

    Je suis actuellement en train de travailler sur un projet Symfony qui nécessite deux bases de données différentes (une MySQL l'autre MSSQL).

    Rien de très exotique pour la base MySQL. Elle est construite à partir d'un fichier schema dans lequel sont définis plusieurs objets. Cette base est utilisée uniquement par l'appli Symfony.

    La base MS SQL fait partie elle d'un data warehouse, elle est donc utilisée par plusieurs applications et je ne dois en aucun cas faire de DDL dessus.

    Mon problème se porte sur la récupération d'informations de cette base.

    J'ai commencé par me dire que Doctrine donnait la possibilité de faire du bon vieux SQL sans mappage d'objet... à priori non

    Du coup je me suis dit pourquoi pas générer les objets avec la commande doctrine:generate-schema... résultat de la commande un bon gros fichier schema avec une colonne supplémentaire "id PK" pour chaque table puisque la base n'en possède pas...

    Donc quand je veux exécuter une requête, forcément :

    Column not found: 1054 Unknown column 't.id'
    J'ai bien essayé en supprimant le champ "id" du fichier schema mais rien à faire, la requête générée ajoute systématiquement un select sur le champ id qui n’existe pas...

    Je ne vois qu'une solution, définir tous les champs de mes tables comme étant une PK mais ça ne m'enchante pas vraiment...

    Avez-vous d'autres idées ?!

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Faire le schéma à la main.

    Y mettre des clefs primaire pour chaque table, y définir les liens.

    Maintenant, si tu as des tables sans clef primaire et aucun champs qui puisse en faire office, faut que je fasse une conférence avec moi même pour trouver une solution

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    J'ai commencé par me dire que Doctrine donnait la possibilité de faire du bon vieux SQL sans mappage d'objet... à priori non
    Et bien si !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Doctrine_Manager::getInstance()->getConnection('xxxx')->getDbh()->query('SELECT * FROM xxxx')->fetchAll(PDO::FETCH_ASSOC);
    La requête fonctionne sans avoir d'objet créé, voilà une bonne journée qui commence problem solved

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Oui et non.

    Tu perds tous l'avantage du modèle et de son adaptation à ton projet, tous l'avantage de l'indépendance de la base. Et tu n'as pas de possibilité de mise à jour.

    C'est un peu comme utiliser une porche avec le moteur d'une deux chevaux.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    Hum il faut plus voir ça comme un webservice à la sauce SQL.

    La base MS SQL est utilisée simplement pour récupérer des informations. En aucun cas j'ai besoin de gérer des objets liés à cette base.

    Le reste de mon appli fonctionne comme une application symfony "standard" donc le moteur de Porsche est bien présent

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Mouai,

    On va dire un moteur de mégane...

    Fait attention à la vérification des paramètres (sql injection)

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

Discussions similaires

  1. [Débutant] lire une bdd existante sans faire la mise à niveau
    Par aminouuuuu dans le forum Windows Mobile
    Réponses: 4
    Dernier message: 13/06/2012, 10h32
  2. Requête sur une bdd HF sans WinDev
    Par moabomotal dans le forum WinDev
    Réponses: 4
    Dernier message: 08/08/2006, 17h55
  3. Réponses: 20
    Dernier message: 27/07/2006, 20h04
  4. Réponses: 3
    Dernier message: 04/05/2006, 14h59
  5. Comment utiliser une BDD GDB sans installer interbase ?
    Par QAYS dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/05/2006, 15h31

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