gpt4 book ai didi

php - 如何在 Symfony2 之外启用 ORM 注释前缀?

转载 作者:行者123 更新时间:2023-12-02 09:20:00 24 4
gpt4 key购买 nike

我正在将旧的 PHP 项目转换为 Symfony2 框架。一些页面现在由我的 Symfony2 前端 Controller (index.php)处理,但许多页面尚未转换。

问题是,在 Symfony 内,我的所有 Doctrine 实体注释都必须以 ORM\前缀开头,但在 Symfony 之外,该前缀似乎未启用,因此我收到以下错误:

Class MyProject\MyBundle\Entity\MyClass 不是有效的实体或映射的父类(super class)。

我尝试复制 Symfony 所做的任何设置,包括 following these instructions [doctrine-project.org],实际上将 app/autoload.php 完全包含到我的旧 Bootstrap 过程中。但没有任何效果。

有谁知道我如何手动复制 Symfony 为我的 Doctrine 注释启用 ORM\前缀所做的任何事情?

最佳答案

我从 Symfony2 Google 小组得到了答案。问题在于文档中显示的 Doctrine 配置在幕后使用 SimpleAnnotationReader,但您需要常规 AnnotationReader 才能使用 ORM\ 命名空间前缀。我通过替换它来使其工作:

$config = new Doctrine\ORM\Configuration();
$driver = $config->newDefaultAnnotationDriver('/path/to/my/entities');

这样:

use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;
// ...
$config = new Doctrine\ORM\Configuration();
$reader = new AnnotationReader();
$driver = new AnnotationDriver($reader, '/path/to/my/entities');

关于php - 如何在 Symfony2 之外启用 ORM 注释前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8236053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com