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

Doctrine2 PHP Discussion :

Entité dans une autre (~oneToOne)


Sujet :

Doctrine2 PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 46
    Points : 39
    Points
    39
    Par défaut Entité dans une autre (~oneToOne)
    Bonjour,

    J'ai deux objets, un Astre et une Coordonnees. Un astre à toujours une coordonnées mais une coordonnées n'a aucun sens seul (c'est toujours lié à un astre).

    Pour matérialiser cela, jusqu’à présent dans l'entité Astre j'avais un attribut de type object qui contenait les coordonnées sérialisée.

    Ceci dit, je souhaiterai à présent faire une recherche dans la base de données sur ses coordonnées, aussi le tant qu'elles sont sous forme d'object sérialisé c'est beaucoup moins pratique.
    Il me faudrait donc une façon de faire ne sérialisant pas les coordonnées mais enregistrant chaque info dans un champ de façon à pouvoir faire une recherche sur une partie (ou toutes) les composantes d'une coordonnées.

    Une méthode valable serai de définir une relation oneToOne entre un Astre et une Coordonnees... Mais comme je viens de le dire, une coordonnées n'a aucun sens seul, ce que je souhaiterai c'est avoir les différents composant d'une coordoonées directement dans la table astre.

    Sauf que je ne sais pas comment faire :p

    J'ai regardé du coté des types custom autant la partie @ORM\Column(type="Coordonnees") serait juste géniale si je pouvait dans cette variable directement mettre un objet de type Coordonnees... mais quand je regarde l'exemple fourni, j'ai pas l'impression que sa me permet de faire un mapping comme je le souhaiterai.

    C'est la que je me suis rapellé que j'avais déjà réfléchit à la question il y a très longtemps, et je suis tombé sur un tuto parlant des template avec doctrine1. Sauf que j'ai l'impression que ceux-ci ne sont plus présent dans doctrine2... a nouveau dommage

    A force de continuer de creuser je suis tombé sur les Embeddables, encore une fois je me suis dit bingo... mais non... si apparement en théorie ils sont disponible, lorsque je tente d'utiliser l'annotation j'ai droit à une exception me disant que sa n'existe pas, j'ai été voir dans le dépôt github, c'est disponible dans la branche master actuelle... mais si on regarde la dernière stable (2.4) bah là sa n'existe malheureusement pas encore.

    Bref... j'ai fait le tour de la question sans succès. Quelqu'un aurai-t'il une idée ?

    Merci d'avance pour votre aide.
    Cordialement, orion.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    Pour ce que tu veux faire, il faudrait te pencher sur les extensions spatial que peuvent proposer les différents SGBD.
    Elles mettent à dispo de nouveaux type de donnée (point, aire, ...) ce qui permet d'effectuer calcul et requete au niveau de la BDD.
    En gros au lieu d'avoir une colonne latitude et une colonne longitude, tu as une seule colonne coordonnées qui gèrent les deux valeurs.

    la doc pour Mysql spatial extension: http://dev.mysql.com/doc/refman/5.0/...xtensions.html

    Une fois cela Ok, tu pourras te pencher sur les extensions Doctrine, et l'intégration dans Symfony.
    Exemple de librairie permettant de mapper ce type de données du SGBD vers les types de données Doctrine https://github.com/Briareos/doctrine-spatial

    Un tuto pour implémenter le tout http://codeutopia.net/blog/2011/02/1...in-doctrine-2/

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Merci pour ta réponse

    Malheureusement... cela ne m'aide pas, mon objet coordonnées n'est pas vraiment une coordonnées spatiale ou géométrique mais fait partie d'un système propre... bref cet objet ne peut pas être transformé dans un format existant d'un SGBD.

    Je crains malheureusement que le tant que les Embeddables ne sortent pas en version stable (j'suis pas au point de prendre une version de dev pour une application censée arriver en production) je vais être obliger de mettre en place une relation oneToOne.

    Merci quand même

    Cordialement, orion.

  4. #4
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Hello

    En quoi la relation OneToOne est-elle problématique concrètement ?

    Ok une coordonnée seule n'a pas d'intérêt mais à toi de faire en sorte de ne pas manipuler d'objet Coordonnée sans passer par un Astre.
    Le seul bémol que j'y vois est une jointure qui va "ralentir" ta requête quand tu voudras récupérer un Astre avec la Coordonée associée. Mais ça reste minime.

    Si aucun autre objet ne manipule de coordonnées, j'aurais tendance à dire que tu peux même tout laisser dans une seule table (en partant du principe que cela représente 2 ou 3 champs et pas une dizaine).

    ++

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Justement à cause de la jointure ^^ ce n'est effectivement que 3 champ, néanmoins... si je peux optimiser un traitement je le fait... et ici vu que c'est quelque chose qui sera chargé à chaque page du site... même si c'est minime, minime * beaucoup = beaucoup

    Ceci dit, c'est sur que le temps que j'ai pas de problème de performances on va laisser comme sa, le jour ou sa ralenti, j'aviserai si les embeddables ne seront pas sorti d'ici là, et si ce n'est pas le cas il sera toujours temps de faire le point.

    Merci de votre attention

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

Discussions similaires

  1. [2.x] Récupérer l' attribut d'une entité dans une autre entité
    Par silverbeach dans le forum Symfony
    Réponses: 8
    Dernier message: 15/01/2015, 13h54
  2. [Entité-Association] Regroupement d'entité dans une autre entité
    Par Crackerz dans le forum Schéma
    Réponses: 12
    Dernier message: 25/03/2014, 03h30
  3. [2.x] Recupération d'une entité dans une autre
    Par SAmpistaroy dans le forum Symfony
    Réponses: 1
    Dernier message: 05/05/2013, 20h57
  4. Réponses: 3
    Dernier message: 16/01/2007, 01h28
  5. [MCD] une entité dans une autre ?
    Par judor31 dans le forum Schéma
    Réponses: 4
    Dernier message: 14/03/2006, 18h21

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