41 votes

Zend Framework 2 + Doctrine 2

Je voudrais commencer à développer avec le Zend Framework et je voudrais utiliser zf2. Depuis que j'utilise Doctrine 2, pouvez-vous proposer des tutoriels pour m'aider à l'intégrer dans zf2? Merci!

53voto

Samuel Herzog Points 2466

la dernière fois vérifié: ZF2.2.*, DoctrineORMModule 0.7.

Officiel Module

Vous pouvez charger DoctrineORMModule via composer:

  • ajouter doctrine/doctrine-orm-module de votre compositeur.json's besoin (exemple de code après la liste bcs de problèmes de mise en forme)
  • exécutez php composer.phar install
  • créer le répertoire ./data/DoctrineORMModule/Proxy et d'assurer l'accès en écriture pour votre application
  • configurer la doctrine via vos applications /config/autoload pour donner le module le projet de paramètres spécifiques (base de données, etc)
  • configurer la doctrine de l'entité de la cartographie dans vos modules, config.php
  • ajouter une entité à votre projet
  • ajouter DoctrineORMModule et DoctrineModule votre config/application.config.php
  • exécutez la cli outil pour générer vos tables, ./vendor/bin/doctrine-module orm:schema-tool:create

Je vous déconseillons fortement de ne pas utiliser compositeur, comme il est un moyen facile pour installer les dépendances et avons les chargeurs automatiques de tout mettre en place. Aussi ZF2 navires via composer par défaut.

Exemple De Code

le compositeur.json

{  
    "require" : {  
        "php": ">=5.3.3",  
        "zendframework/zendframework": "2.*"                
        "doctrine/doctrine-orm-module": "0.*"                
    }  
}  

les entités paramètres

<?php
return array(
    'doctrine' => array(
        'driver' => array(
            // defines an annotation driver with two paths, and names it `my_annotation_driver`
            'my_annotation_driver' => array(
                'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                'cache' => 'array',
                'paths' => array(
                    'path/to/my/entities',
                    'another/path'
                ),
            ),

            // default metadata driver, aggregates all other drivers into a single one.
            // Override `orm_default` only if you know what you're doing
            'orm_default' => array(
                'drivers' => array(
                    // register `my_annotation_driver` for any entity under namespace `My\Namespace`
                    'My\Namespace' => 'my_annotation_driver'
                )
            )
        )
    )
);

Un gotcha être pris en compte: Les chemins d'accès à vos entités doivent être qualifiés. Meilleur départ avec __DIR__, sinon les choses vont se casser (Chaque nouveau projet, je me demande pourquoi l'outil de ligne de commande ne fonctionne pas jusqu'à ce que je trouve cette erreur ... ;)

paramètres de connexion

<?php
return array(
    'doctrine' => array(
        'connection' => array(
            // default connection name
            'orm_default' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => array(
                    'host'     => 'localhost',
                    'port'     => '3306',
                    'user'     => 'username',
                    'password' => 'password',
                    'dbname'   => 'database',
                )
            )
        )
    ),
);

Tous les exemples de code sont une partie de la doctrine officielle module readme

Pour En Savoir Plus:

Marco Pivetta fait une magnifique présentation de la doctrine-utilisation du module, que je recommande à tout le monde à l'aide de ce module.

Jason Grimes a écrit un tutoriel en vedette sur phpdeveloper.org ce qui devrait aider à l'installation de la doctrine, avant il y avait un fonctionnaire du module.

5voto

cantera Points 3322

Mise à jour:

J'ai fait des recherches un peu plus loin, et il semblerait que la prise en charge native pour la Doctrine de la 2 dans Zend Framework 2 est encore en travaux. Je conseille de garder un oeil sur ce Github Essentiel de surveiller la façon dont le progrès est à venir le long.

En attendant, vous pouvez consulter le référentiel zf2-doctrine-fournisseur de Michiel Staessen. Il n'y a pas de documentation pour le moment, mais il serait logique de la prochaine étape une fois que vous êtes jusqu'à la vitesse sur la façon dont le Bisna de la bibliothèque fonctionne en ZF 1.x.

Je suis encouragé de voir que la plupart de la discussion autour de ZF2 prise en charge native de la Doctrine a été porté sur la flexibilité. C'est mon espoir (et apparemment d'autres aussi) que l'utilisation de la Doctrine dans le Zend Framework ne sera pas un choix, mais plutôt une option pour la construction des parties spécifiques d'un solide et flexible modèle de domaine.

Original Post:

Heureusement, la plupart des principales ressources pour l'apprentissage de la ZF 1.x + Doctrine a pris en compte la migration de ZF2. Ils ne couvrent pas la prise en charge native de la Doctrine dans ZF2, mais ils devraient vous aider à obtenir commencé avec beaucoup de grands principes.

Zendcasts a une excellente Doctrine 2, la série de tutoriels en commençant par "Test d'Unité de Doctrine 2 Entités." Assurez-vous de regarder les vidéos qui suivent, elle aussi, comme Jon L. (le présentateur) a continué à intégrer les meilleures pratiques qu'il a progressé à travers les vidéos.

Zend Technologies a définitivement un webinaire intitulé "Zend Framework v1 + Doctrine v2". Les présentateurs de discuter spécifiquement de la façon dont ils ont structuré l'exemple d'application pour accueillir le ZF2 de la migration.

Comme pour ZF2 la prise en charge native, je n'ai rien trouvé encore. Rob Allen est bien connu ZF2 tutoriel utilise Zend\Db et il n'y a pas de Doctrine de la couverture (encore) dans Nick Belhomme du "Zend Framework 2.0 livre de recettes."

Bonne chance de commencer et publiez vos bonnes ressources que vous trouverez sur ZF2/D2.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X