如何在 ZF2 中配置原则文件映射驱动程序


How to configure Doctrine file mapping driver in ZF2

我有这个错误:

致命错误:未捕获的异常 "Doctrine''Common''Persistence''Mapping''MappingException" '文件映射驱动程序必须具有有效的目录路径,但是 给定路径 [路径/到/我的/实体] 似乎不正确

我在我的模块中.php有这个:

'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(
                __DIR__ . '/../src/Realez/Entity',
                '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`
                'Realez/Entity' => 'my_annotation_driver'
            )
        )
    )
)

我遇到了完全相同的问题。我通过在教义期望我存储实体的位置创建一个空的Entity目录来解决它。您所要做的就是在以下位置创建一个空的Entity目录:__DIR__ . '/../src/Realez/Entity'

修改 module.config.php 文件。

return array(
    'doctrine' => array(
        'driver' => array(
            __NAMESPACE__.'_driver' => array(
                'class' => 'Doctrine'ORM'Mapping'Driver'AnnotationDriver',
                'cache' => 'array',
                'paths' => array(__DIR__ . '/../src/'.__NAMESPACE__.'/Entity')
            ),
            'orm_default' => array(
                'drivers' => array(
                     __NAMESPACE__''Entity' =>  __NAMESPACE__.'_driver'
                ),
            ),
        ),
    ),                 
);
**File mapping drivers must have a valid directory path, however the given path [path/to/my/entities]** 

这意味着您在该目录中没有实体文件夹

您只需要在该位置创建一个

确保您的paths正确无误。

           __NAMESPACE__ . '_driver' => [
                'class' => AnnotationDriver::class,
                'cache' => 'array',
                'paths' => [__DIR__ . '/../src/Entity/'], 
// or:                'paths' => [__DIR__ . '/../src/Entity/'.__NAMESPACE__.'/Entity']
            ],
            'orm_default' => [
                'drivers' => [
                    __NAMESPACE__ . ''Entity' => __NAMESPACE__ . '_driver'
                ]
            ],

您也可以尝试使用原则命令行工具清除元数据缓存:

./doctrine-module orm:clear-cache:metadata