【问题标题】:creating mapped ORM Entities without the cli?在没有 cli 的情况下创建映射的 ORM 实体?
【发布时间】:2014-11-13 07:23:57
【问题描述】:

我正在开发一个使用 zend 框架 2 和学说的 apigity 项目。

我在我的 zf2 项目的 local.config.php 中包含以下代码:

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

在我的主模块的配置文件(module.config.php)中,我包含了以下代码:

 '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'
            )
        )
    )
)

我阅读了以下网址: http://samsonasik.wordpress.com/2013/04/10/zend-framework-2-generate-doctrine-entities-from-existing-database-using-doctrinemodule-and-doctrineormmodule/

它说要从我的数据库创建实体,我需要使用vendor/bin/doctrine-module

当我尝试执行学说模块时,我收到以下错误:

PHP Fatal error:  Uncaught exception 'Zend\ServiceManager\Exception\ServiceNotFoundException' with message 'Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for doctrine.cli' in /mnt/storage/home/ufk/projects/myalcoholist-apigility/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:529
Stack trace:
#0 /mnt/storage/home/ufk/projects/myalcoholist-apigility/vendor/doctrine/doctrine-module/bin/doctrine-module.php(51): Zend\ServiceManager\ServiceManager->get('doctrine.cli')
#1 /mnt/storage/home/ufk/projects/myalcoholist-apigility/vendor/doctrine/doctrine-module/bin/doctrine-module(4): include('/mnt/storage/ho...')
#2 {main}
thrown in /mnt/storage/home/ufk/projects/myalcoholist-apigility/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php on line 529

Fatal error: Uncaught exception 'Zend\ServiceManager\Exception\ServiceNotFoundException' with message 'Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for doctrine.cli' in /mnt/storage/home/ufk/projects/myalcoholist-apigility/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:529
Stack trace:
#0 /mnt/storage/home/ufk/projects/myalcoholist-apigility/vendor/doctrine/doctrine-module/bin/doctrine-module.php(51): Zend\ServiceManager\ServiceManager->get('doctrine.cli')
#1 /mnt/storage/home/ufk/projects/myalcoholist-apigility/vendor/doctrine/doctrine-module/bin/doctrine-module(4): include('/mnt/storage/ho...')
#2 {main}
thrown in /mnt/storage/home/ufk/projects/myalcoholist-apigility/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php on line 529

通过阅读以下堆栈溢出问题: Apigility - How to use Doctrine ORM Module from ZF2 command line

我知道理论模块客户端不是必需的,我应该执行

php public/index.php orm:info

为了看到学说的状态。

执行此操作时,我收到以下错误消息:

[Exception]                                                                                                       
You do not have any mapped Doctrine ORM entities according to the current configuration. If you have entities or  
mapping files you should check your mapping configuration for errors.                                            

这是因为我创建了实体文件夹,但它是空的。

现在的问题是,如果我不能使用学说模块,如何基于数据库创建实体?

【问题讨论】:

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


    【解决方案1】:

    'paths' => array(DIR . '/../src/' . NAMESPACE . '/Entity')

    我不明白这条路..你能尝试一条简单的路吗? 例如

    __DIR__.'/../src/YourModule/Entity'
    

    并将你的实体写入 YouModule 模块,在 src/YouModule/Entity

    【讨论】:

    • 嗨,我的命名空间是模块的名称,所以路径是正确的。问题是目录是空的,因为我没有生成任何实体类。问题是如何生成它们
    • 但是你的目录是空的?!你有没有创建一个表映射?属实体创建 getter 和 setter 并验证您的地图 docs.doctrine-project.org/projects/doctrine-orm/en/latest/…
    • 我没有创建表映射,因为我不想为每个表手动创建表映射。我有很多,正在寻找一种根据我的数据库自动创建它们的方法
    • 我不记得 DoctrineModule 是否支持此流程,但您可以尝试使用 php public/index.php orm:convert-mapping --from-database yml /path/to/mapping-path-converted -to-yml(或您的映射驱动程序)
    • 我被拒绝访问用户“用户名”@“本地主机”(使用密码:是)。我确实在 local.config.php 中定义了学说的凭据,为什么它不使用该信息?
    猜你喜欢
    • 2023-02-02
    • 2018-09-22
    • 2014-06-06
    • 1970-01-01
    • 2012-08-17
    • 2021-06-09
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多