大家好,我在symfony4.1上做了一个新项目
我使用postgres 10.5作为我的SGBD。
我用symfony的maker bundle创建了一个实体,现在我试着用那个命令仍然用maker bundle进行迁移:
php bin/console make:migration
下面是堆栈跟踪:
In Container.php line 274:
You have requested a non-existent service "doctrine". Did you mean one of these: "console.command.public_alias.doctrine_cache.contains_command", "console.command.public
_alias.doctrine_cache.delete_command", "console.command.public_alias.doctrine_cache.flush_command", "console.command.public_alias.doctrine_cache.stats_command", "consol
e.command.public_alias.doctrine_migrations.diff_command", "console.command.public_alias.doctrine_migrations.execute_command", "console.command.public_alias.doctrine_mig
rations.generate_command", "console.command.public_alias.doctrine_migrations.latest_command", "console.command.public_alias.doctrine_migrations.migrate_command", "conso
le.command.public_alias.doctrine_migrations.status_command", "console.command.public_alias.doctrine_migrations.version_command"?
Exception trace:
Symfony\Component\DependencyInjection\Container->make() at /opt/www/jame/dataneo-erp/vendor/symfony/dependency-injection/Container.php:222
Symfony\Component\DependencyInjection\Container->get() at /opt/www/jame/dataneo-erp/vendor/doctrine/doctrine-migrations-bundle/Command/Helper/DoctrineCommandHelper.php:21
Doctrine\Bundle\MigrationsBundle\Command\Helper\DoctrineCommandHelper::setApplicationHelper() at /opt/www/jame/dataneo-erp/vendor/doctrine/doctrine-migrations-bundle/Command/MigrationsDiffDoctrineCommand.php:34
Doctrine\Bundle\MigrationsBundle\Command\MigrationsDiffDoctrineCommand->execute() at /opt/www/jame/dataneo-erp/vendor/symfony/console/Command/Command.php:251
Symfony\Component\Console\Command\Command->run() at /opt/www/jame/dataneo-erp/vendor/symfony/maker-bundle/src/Maker/MakeMigration.php:78
Symfony\Bundle\MakerBundle\Maker\MakeMigration->generate() at /opt/www/jame/dataneo-erp/vendor/symfony/maker-bundle/src/Command/MakerCommand.php:100
Symfony\Bundle\MakerBundle\Command\MakerCommand->execute() at /opt/www/jame/dataneo-erp/vendor/symfony/console/Command/Command.php:251
Symfony\Component\Console\Command\Command->run() at /opt/www/jame/dataneo-erp/vendor/symfony/console/Application.php:904
Symfony\Component\Console\Application->doRunCommand() at /opt/www/jame/dataneo-erp/vendor/symfony/framework-bundle/Console/Application.php:89
Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at /opt/www/jame/dataneo-erp/vendor/symfony/console/Application.php:262
Symfony\Component\Console\Application->doRun() at /opt/www/jame/dataneo-erp/vendor/symfony/framework-bundle/Console/Application.php:75
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /opt/www/jame/dataneo-erp/vendor/symfony/console/Application.php:145
Symfony\Component\Console\Application->run() at /opt/www/jame/dataneo-erp/bin/console:39
下面是一些配置文件的代码:
services.yaml
# This file is the entry point to configure your own services.
# Files in the packages/ subdirectory configure your dependencies.
# Put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:
locale: 'fr'
services:
autowire: true
autoconfigure: true
public: false
App\:
resource: '../src/*'
exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'
App\Controller\:
resource: '../src/Controller'
tags: ['controller.service_arguments']
config/packages/doctrin.yaml
parameters:
env(DATABASE_URL): ''
doctrine:
dbal:
driver: 'pdo_pgsql'
server_version: '10.5'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(resolve:DATABASE_URL)%'
orm:
auto_generate_proxy_classes: '%kernel.debug%'
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
我的.env
APP_ENV=dev
APP_SECRET=secret
DATABASE_URL="pgsql://erp_dev:My_PASSWORD@127.0.0.1:5432/erp"
MAILER_URL=null://localhost
编辑:
我试着把“服务:public:true”,结果是一个新的错误:
In DefinitionErrorExceptionPass.php line 54:
[Symfony\Component\DependencyInjection\Exception\RuntimeException]
Cannot autowire service "App\Repository\SocieteRepository": argument "$registry" of method "__construct()" refer
ences interface "Symfony\Bridge\Doctrine\RegistryInterface" but no such service exists. Did you create a class t
hat implements this interface?
Exception trace:
Symfony\Component\DependencyInjection\Compiler\DefinitionErrorExceptionPass->processValue() at /opt/www/jame/dataneo-erp/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php:60
Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass->processValue() at /opt/www/jame/dataneo-erp/vendor/symfony/dependency-injection/Compiler/DefinitionErrorExceptionPass.php:32
Symfony\Component\DependencyInjection\Compiler\DefinitionErrorExceptionPass->processValue() at /opt/www/jame/dataneo-erp/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php:39
Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass->process() at /opt/www/jame/dataneo-erp/vendor/symfony/dependency-injection/Compiler/Compiler.php:95
Symfony\Component\DependencyInjection\Compiler\Compiler->compile() at /opt/www/jame/dataneo-erp/vendor/symfony/dependency-injection/ContainerBuilder.php:736
Symfony\Component\DependencyInjection\ContainerBuilder->compile() at /opt/www/jame/dataneo-erp/vendor/symfony/http-kernel/Kernel.php:519
Symfony\Component\HttpKernel\Kernel->initializeContainer() at /opt/www/jame/dataneo-erp/vendor/symfony/http-kernel/Kernel.php:123
Symfony\Component\HttpKernel\Kernel->boot() at /opt/www/jame/dataneo-erp/vendor/symfony/framework-bundle/Console/Application.php:65
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /opt/www/jame/dataneo-erp/vendor/symfony/console/Application.php:145
Symfony\Component\Console\Application->run() at /opt/www/jame/dataneo-erp/bin/console:39
下面是命令的结果
php bin/console debug:container|grep原则
console.command.public_alias.doctrine_cache.contains_command alias for "doctrine_cache.contains_command"
console.command.public_alias.doctrine_cache.delete_command alias for "doctrine_cache.delete_command"
console.command.public_alias.doctrine_cache.flush_command alias for "doctrine_cache.flush_command"
console.command.public_alias.doctrine_cache.stats_command alias for "doctrine_cache.stats_command"
console.command.public_alias.doctrine_migrations.diff_command alias for "doctrine_migrations.diff_command"
console.command.public_alias.doctrine_migrations.execute_command alias for "doctrine_migrations.execute_command"
console.command.public_alias.doctrine_migrations.generate_command alias for "doctrine_migrations.generate_command"
console.command.public_alias.doctrine_migrations.latest_command alias for "doctrine_migrations.latest_command"
console.command.public_alias.doctrine_migrations.migrate_command alias for "doctrine_migrations.migrate_command"
console.command.public_alias.doctrine_migrations.status_command alias for "doctrine_migrations.status_command"
console.command.public_alias.doctrine_migrations.version_command alias for "doctrine_migrations.version_command"
doctrine_cache.abstract.apc Doctrine\Common\Cache\ApcCache
doctrine_cache.abstract.apcu Doctrine\Common\Cache\ApcuCache
doctrine_cache.abstract.array Doctrine\Common\Cache\ArrayCache
doctrine_cache.abstract.chain Doctrine\Common\Cache\ChainCache
doctrine_cache.abstract.couchbase Doctrine\Common\Cache\CouchbaseCache
doctrine_cache.abstract.file_system Doctrine\Common\Cache\FilesystemCache
doctrine_cache.abstract.memcache Doctrine\Common\Cache\MemcacheCache
doctrine_cache.abstract.memcached Doctrine\Common\Cache\MemcachedCache
doctrine_cache.abstract.mongodb Doctrine\Common\Cache\MongoDBCache
doctrine_cache.abstract.php_file Doctrine\Common\Cache\PhpFileCache
doctrine_cache.abstract.predis Doctrine\Common\Cache\PredisCache
doctrine_cache.abstract.redis Doctrine\Common\Cache\RedisCache
doctrine_cache.abstract.riak Doctrine\Common\Cache\RiakCache
doctrine_cache.abstract.sqlite3 Doctrine\Common\Cache\SQLite3Cache
doctrine_cache.abstract.void Doctrine\Common\Cache\VoidCache
doctrine_cache.abstract.wincache Doctrine\Common\Cache\WinCacheCache
doctrine_cache.abstract.xcache Doctrine\Common\Cache\XcacheCache
doctrine_cache.abstract.zenddata Doctrine\Common\Cache\ZendDataCache
doctrine_cache.contains_command Doctrine\Bundle\DoctrineCacheBundle\Command\ContainsCommand
doctrine_cache.delete_command Doctrine\Bundle\DoctrineCacheBundle\Command\DeleteCommand
doctrine_cache.flush_command Doctrine\Bundle\DoctrineCacheBundle\Command\FlushCommand
doctrine_cache.stats_command Doctrine\Bundle\DoctrineCacheBundle\Command\StatsCommand
doctrine_migrations.diff_command Doctrine\Bundle\MigrationsBundle\Command\MigrationsDiffDoctrineCommand
doctrine_migrations.execute_command Doctrine\Bundle\MigrationsBundle\Command\MigrationsExecuteDoctrineCommand
doctrine_migrations.generate_command Doctrine\Bundle\MigrationsBundle\Command\MigrationsGenerateDoctrineCommand
doctrine_migrations.latest_command Doctrine\Bundle\MigrationsBundle\Command\MigrationsLatestDoctrineCommand
doctrine_migrations.migrate_command Doctrine\Bundle\MigrationsBundle\Command\MigrationsMigrateDoctrineCommand
doctrine_migrations.status_command Doctrine\Bundle\MigrationsBundle\Command\MigrationsStatusDoctrineCommand
doctrine_migrations.version_command Doctrine\Bundle\MigrationsBundle\Command\MigrationsVersionDoctrineCommand
maker.doctrine_helper Symfony\Bundle\MakerBundle\Doctrine\DoctrineHelper
sensio_framework_extra.converter.doctrine.orm Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter
sensio_framework_extra.converter.doctrine.orm.expression_language alias for "sensio_framework_extra.converter.doctrine.orm.expression_language.default"
sensio_framework_extra.converter.doctrine.orm.expression_language.default Symfony\Component\ExpressionLanguage\ExpressionLanguage
非常感谢。
2条答案
按热度按时间csga3l581#
在services.yml中更改以下行
通过
20jt8wwn2#
当我尝试为我的自定义symfony包添加单元测试时,我遇到了同样的错误。在/tests/App/AppKernel. php中,我加载了
DoctrineBundle
:我不需要DB连接,所以我没有添加原则配置,但因为原则配置丢失,我得到了这个错误。解决方案是为测试
/tests/App/config/doctrine.yml
添加原则配置:并将其加载到
/tests/App/AppKernel.php
中:注意:您需要配置phpunit.xml.dist来使用这个AppKernel文件。
我的测试需要
EntityManager
,为此我不得不添加doctrine.dbal
和doctrine.orm
,但只要解决这个错误,doctrine.dbal
配置就足够了。