2010-07-04 9 views
0

Comment devrait-on mettre en œuvre une relation univoque facultative dans Doctrine ORM et Symfony? Supposons que certains dossiers sont représentés dans la base de données. Chaque dossier peut avoir une icône par défaut ou une icône personnalisée représentée dans une autre table. Comment cette relation doit-elle être décrite dans le fichier de schéma? Comment puis-je dire que dans le cas d'une relation de dossier donnée est ou ne se produit pas?Relation facultative avec la doctrine ORM

je me suis à deviner, mais chacun ne semble pas être assez bon:

1) Disons que je folder_icon avec table de définir id colonne et folder_icon_id colonne folder table et un lien entre ces colonnes avec clé étrangère. Si folder_icon_id contient NULL, la relation ne se produit pas. S'il contient une valeur entière, il pointe vers l'icône de dossier correspondante. Lorsque je l'implémente de cette façon et que j'essaie d'obtenir une icône de dossier en utilisant $ folder-> getFolderIcon(), j'obtiens une instance de classe FolderIcon avec des champs null (où je préférerais obtenir quelque chose comme NULL, FALSE ou Doctrine_Null). Pourquoi est-ce vrai? Comment dois-je vérifier si l'objet retourné n'est pas une icône de dossier «réel»?

2) Supposons que j'utilise une méthode similaire à la précédente mais que la première ligne de la table folder_icon soit l'icône par défaut, de sorte que chaque dossier qui n'a aucune icône personnalisée sélectionnée est lié à cette première ligne. Dans ce cas, il n'y a aucun problème à obtenir des instances fictives de la classe FolderIcon. Mais il y a un problème si l'icône de dossier personnalisé est supprimée de la base de données, car il n'y a pas de comportement onDelete 'SET 1' pour relier tous les dossiers utilisant l'icône supprimée avec l'icône par défaut.

Comment ce problème devrait-il être résolu? Quelle est la bonne façon de définir ce type de relation dans un fichier de schéma?

Répondre

1

Le problème est avec les méthodes magiques getVariable

Utilisez dossier- $> folder_icon et pour tester une existence que l'utilisation de la relation isset(). Avoir une lecture du site doc doctrine sur les tests de l'existence d'une relation, je suis actuellement mobile si incapable de lier à elle.

+0

Super, c'est exactement ce que je cherchais. Donc, je devrais suivre la première façon de décrire le schéma et vérifier si la relation existe pour un dossier donné avec isset ($ folder-> FolderIcon). Merci! –

Questions connexes