Zend Framework 2 + Doctrine 2

时间:2011-10-23 15:48:31

标签: php zend-framework doctrine doctrine-orm zend-framework2

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

2 个答案:

答案 0 :(得分:53)

上次检查

:ZF2.2。*,DoctrineORMModule 0.7。

官方模块

您可能希望通过composer加载DoctrineORMModule

  • doctrine/doctrine-orm-module添加到您的 composer.json 的要求(格式问题列表bcs之后的示例代码)
  • 运行php composer.phar install
  • 创建目录./data/DoctrineORMModule/Proxy并确保您的应用程序的写访问权
  • configure doctrine通过您的应用程序/config/autoload为模块提供项目特定设置(数据库等)
  • 在模块config.php
  • 中配置doctrine的实体映射
  • 向您的项目添加实体
  • DoctrineORMModuleDoctrineModule添加到您的config/application.config.php
  • 运行cli工具以生成表格./vendor/bin/doctrine-module orm:schema-tool:create

我强烈反对您不使用composer,因为这是一种简单的方法来安装依赖项并自动设置所有自动加载器。此外,ZF2默认通过作曲家发货。

示例代码

composer.json

{  
    "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' => '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'
                )
            )
        )
    )
);

需要注意的是:你的成员的路径应该是完全合格的。最好从__DIR__开始,否则事情就会中断(每个新项目我都想知道为什么命令行工具在我发现此错误之前无效...;)

连接设置

<?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',
                )
            )
        )
    ),
);

All code examples are part of the official doctrine module readme

进一步阅读:

Marco Pivetta提出wonderful presentation about doctrine-module usage,我建议所有人使用此模块。

在有一个官方模块之前,phpdeveloper.org上的

Jason Grimes wrote a tutorial应该有助于安装学说。

答案 1 :(得分:5)

<强>更新

我进一步研究了这一点,听起来Zend Framework 2中对Doctrine 2的原生支持仍在进行中。我建议密切关注这个Github Gist,以监控进展情况。

与此同时,您可能需要查看Michiel Staessen的存储库zf2-doctrine-provider。目前还没有相关的文档,但是当你快速了解Bisna库在ZF 1.x中的工作方式时,这将是一个合乎逻辑的下一步。

我很高兴看到围绕ZF2本身支持Doctrine的大部分讨论都集中在灵活性上。我希望(显然也是其他人)在Zend Framework中使用Doctrine不是一个选择,而是选择,而是构建一个可靠而灵活的域模型的特定部分。

原帖:

幸运的是,学习ZF 1.x + Doctrine的大部分主要资源都考虑了向ZF2的迁移。它们不包括ZF2中对Doctrine的原生支持,但它们应该可以帮助您开始使用许多主要原则。

Zendcasts有一个优秀的Doctrine 2教程系列,以“Unit Testing Doctrine 2 Entities开头”。请务必观看随后播放的视频,因为Jon L.(演示者)在视频播出过程中继续采用最佳实践。

Zend Technologies有一个名为“Zend Framework v1 + Doctrine v2”的权威网络研讨会。演示者专门讨论了他们如何构建示例应用程序以适应ZF2迁移。

对于ZF2原生支持,我还没有找到任何东西。罗伯·艾伦着名的ZF2 tutorial使用了Zend \ Db,并且在Nick Belhomme的“Zend Framework 2.0 Cookbook中没有任何学说报道。”

祝你好运,请发布你在ZF2 / D2上找到的任何好资源。