Comment avez-vous étendez une entité dans Symfony2 comme vous avez utilisé pour être en mesure d'en Symfony 1?
Dans les anciennes versions de Symfony vous avez utilisé pour être en mesure de construire de nouveaux objets à l'intérieur d'un objet de données par l'extension d'une classe de modèle à un allongement de la sous-classe.
Par exemple, j'ai eu un questionnaire modèle qui avait un tableau de résultats. Que les résultats de la table avait une Result.php modèle de classe qui permet de définir et d'obtenir les résultats par le biais de la Doctrine. J'ai ensuite utilisé l'ResultPeer.php le modèle de la sous-classe pour ajouter une nouvelle fonction à l'objet de Résultat qui a pris la suite et en fonction d'un ensemble fixe des seuils calculé un score et de la couleur correspondante.
Dans la nouvelle version de Symfony2 à l'aide de Doctrine2 j'ai du mal à travailler sur la meilleure façon de le faire. Lors de la création d'une entité, je ne peux que trouver dans la documentation de la capacité à ajouter des objets sur la base des données de la structure des relations.
J'ai regardé l'entité référentiels, mais qui ne semble pas s'étendre ou d'ajouter des fonctionnalités à un objet original. Il semble ramener des objets de données de base sur les requêtes qui sont plus complexes que le standard des fonctions de requête.
J'ai aussi regardé des services, que je peux utiliser pour collecter de l'objet, puis à l'aide de l'objet à créer un nouveau tableau qui comprend cet objet et les données nouvellement créé, mais cela ne semble pas droit ou de la philosophie que Symfony est tout au sujet.
Personne ne sait comment les fonctions peuvent être ajoutés à un objet de données. Je l'ai trouvé vraiment utile dans l'ancienne version de Symfony, mais n'arrive pas à trouver l'alternative dans la nouvelle version de Symfony2.
OriginalL'auteur Adam Stacey | 2011-12-09
Vous devez vous connecter pour publier un commentaire.
Extension d'une entité est le chemin à parcourir. Dans la Doctrine2 monde, ils parlent à propos de l'héritage de la cartographie. Voici un exemple de code. Il définit un
BaseEntity
alors il est extendsed pour créer unBaseAuditableEntity
et enfin, il y a unUser
entité d'étendreBaseAuditableEntity
. L'astuce est d'utiliser le@Orm\MappedSuperclass
annotation. Cette succession permettra de créer une table unique, même si il y a trois entités dans mon graphe de liens. Ce sera ensuite fusionner toutes les propriétés dans une seule table. Le tableau créé contient tous les biens mappé à travers les relations, c'est à dire les propriétés de BaseAuditableEntity et de l'Utilisateur. Ici, les exemples de code:Acme\WebsiteBundle\Entity\BaseEntity.php
Acme\WebsiteBundle\Entity\BaseAuditableEntity.php
Acme\WebsiteBundle\Entity\User.php
Voici un lien vers le officiel mappage de l'héritage de la documentation de Doctrine 2.1: ici
Espère que cette aide, n'hésitez pas à commenter si vous avez besoin de plus d'informations.
Ce qui concerne,
Matt
Supposons, j'ai
BaseAuditableEntity.php
des colonnes delastName
avec nullable =false, puis sur l'extension de la classe àUser.php
. J'ai besoin de changer le ci-dessus coulumn lastname accepter les valeurs null(nullable=true). Vous s'il vous plaît aidez-moi, comment faire?Dans votre
User.php
classe, essayez de redfine lalastName
de la propriété et de l'annotation associée. Peut-être que cela va remplacer ce qui a été défini précédemment, dans l'entité de base. Si cela ne fonctionne pas, j'ai peur que je ne peut pas vous aider davantage. Essayer de demander sur le doctrine2 liste de diffusion. Si vous trouvez une solution, n'hésitez pas à le signaler ici.OriginalL'auteur Matt