在我使用Symfony 4.2和API平台开发的应用中,
我安装DoctrineExtensions bundle以使用Loggable扩展名,
并且我按照Symfony documentation和Loggable extension中的说明进行操作。
当我仅使用一个EntityManager时,一切正常。
但是我想将LogEntry实体表移到另一个数据库。
因此,我按照Symfony doc中所述创建了第二个EntityManager。
之后,我在我的应用程序中修改了带有注解@Gedmo\Loggable
的实体
我得到这个错误:
The class 'Gedmo\Loggable\Entity\LogEntry' was not found in the chain configured namespaces 'App\Entity'
。
我的config/packages/doctrine.yaml
文件:
parameters:
env(DATABASE_URL): ''
doctrine:
dbal:
connections:
default:
driver: 'pdo_mysql'
server_version: '%env(resolve:SERVER_VERSION)%'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(resolve:DATABASE_URL)%'
log:
driver: 'pdo_mysql'
server_version: '%env(resolve:SERVER_VERSION)%'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(resolve:LOG_DATABASE_URL)%'
orm:
auto_generate_proxy_classes: '%kernel.debug%'
entity_managers:
default:
naming_strategy: doctrine.orm.naming_strategy.underscore
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
log:
naming_strategy: doctrine.orm.naming_strategy.underscore
connection: log
mappings:
gedmo_loggable:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/vendor/gedmo/doctrine-extensions/lib/Gedmo/Loggable/Entity'
prefix: 'Gedmo\Loggable\Entity'
alias: GedmoLoggable
我要观看的实体示例:
<?php
namespace App\Entity;
...
use Gedmo\Mapping\Annotation as Gedmo;
...
/**
* @ApiResource
* @Gedmo\Loggable
* @ORM\Table(name="patients")
*/
class Patient
{
/**
* @ORM\Id
* @ORM\Column(type="guid", unique=true)
* @ORM\GeneratedValue(strategy="UUID")
* @Assert\Uuid
*/
private $id;
/**
* @ORM\Column(length=50)
* @Assert\NotBlank()
* @Assert\Length(max=50)
* @Gedmo\Versioned
*/
public $familyName;
/**
* @ORM\Column(length=50)
* @Assert\NotBlank()
* @Assert\Length(max=50)
* @Gedmo\Versioned
*/
public $firstName;
...
}
我尝试在doctrine.yaml
中添加和删除一些属性,但是我总是遇到相同的错误...
感谢您的时间。