Zend 框架 2 + 教义 2

我想开始使用 Zend Framework 进行开发,我想使用 zf2.由于我使用 Doctrine 2,您能否建议一些教程来帮助我将其集成到 zf2 中?谢谢!

I would like to start developing with Zend Framework and I would like to use zf2. Since I use Doctrine 2, can you suggest some tutorials to help me to integrate it in zf2? Thanks!

推荐答案

上次检查:ZF2.2.*, DoctrineORMModule 0.7.

你可能想通过 composer 加载 DoctrineORMModule:

You may want to load DoctrineORMModule via composer:

  • doctrine/doctrine-orm-module 添加到您的 composer.json 的要求中(格式问题列表 bcs 之后的示例代码)
  • 运行 php composer.phar 安装
  • 创建目录 ./data/DoctrineORMModule/Proxy 并确保您的应用程序具有写入权限
  • 配置学说通过你的应用程序/config/autoload给模块项目特定设置(数据库等)
  • 在你的模块中配置学说的实体映射config.php
  • 将实体添加到您的项目中
  • DoctrineORMModuleDoctrineModule 添加到您的 config/application.config.php
  • 运行 cli 工具生成表 ./vendor/bin/doctrine-module orm:schema-tool:create
  • add doctrine/doctrine-orm-module to your composer.json's require (example code after list bcs of formatting problems)
  • run php composer.phar install
  • create the directory ./data/DoctrineORMModule/Proxy and ensure write access for your application
  • configure doctrine via your applications /config/autoload to give the module the project-specific settings (database etc)
  • configure doctrine's entity mapping in your modules config.php
  • add an entity to your project
  • add DoctrineORMModule and DoctrineModule to your config/application.config.php
  • run the cli tool to generate your tables ./vendor/bin/doctrine-module orm:schema-tool:create

我强烈建议您不要使用 composer,因为它是一种安装依赖项并设置自动加载器的简单方法.ZF2 默认通过 composer 发布.

I strongly discourage you from not using composer, as it is an easy way to install dependencies and have the autoloaders all set up. Also ZF2 ships via composer by default.

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

实体设置

<?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' => 'DoctrineORMMappingDriverAnnotationDriver',
                '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 `MyNamespace`
                    'MyNamespace' => 'my_annotation_driver'
                )
            )
        )
    )
);

需要注意的问题:通往实体的路径应该是完全限定的.最好从 __DIR__ 开始,否则事情会中断(每个新项目我都想知道为什么命令行工具在我发现这个错误之前不起作用......;)

A gotcha to be aware of: The paths to your entites should be fully qualified. Best start with __DIR__, else things will break (Every new project I wonder why the command line tool doesn't work until I find this error ... ;)

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

所有代码示例都是官方教条模块自述文件的一部分

Marco Pivetta 做了 关于教义模块使用的精彩演示,我向所有使用此模块的人推荐.

Marco Pivetta made a wonderful presentation about doctrine-module usage, which I recommend to everybody using this module.

Jason Grimes 写了一个教程 在官方模块出现之前,phpdeveloper.org 上的特色应该有助于安装学说.

Jason Grimes wrote a tutorial featured on phpdeveloper.org which should help installing doctrine, before there was an official module.

相关文章