gpt4 book ai didi

php - XXX 不是有效的实体或映射的父类(super class)//和配置选项

转载 作者:行者123 更新时间:2023-12-05 04:18:27 25 4
gpt4 key购买 nike

刚开始使用Doctrine2,想持久化一个实体的时候报错。这是我的错误:“类“Myapp\app\entity\user”不是有效的实体或映射的父类(super class)。”

我的电脑上没有安装 eAccelerator。

我的应用程序(我不使用 Symfony)结构是这样的:

  • 我的应用程序
    • 应用程序
      • 实体
    • 核心
      • 外部
        • 学说

然后我用以下方法初始化 Doctrine:

$classLoader = new ClassLoader('Doctrine', CORE_PATH . 'external');
$classLoader->register();

$cache = new \Doctrine\Common\Cache\ArrayCache();

$doctrineConfig = new \Doctrine\ORM\Configuration();

$doctrineConfig->setMetadataCacheImpl($cache);
$doctrineConfig->setQueryCacheImpl($cache);

$driverImpl = $doctrineConfig->newDefaultAnnotationDriver(array(APP_PATH . 'entity'));
$doctrineConfig->setMetadataDriverImpl($driverImpl);

$doctrineConfig->setAutoGenerateProxyClasses(false);

$connectionOptions = array(
'driver' => $database['driver'],
'dbname' => $database['dbname'],
'user' => $database['username'],
'password' => $database['password']
);

$this->em = EntityManager::create($connectionOptions, $doctrineConfig);

这些行有什么问题?

此外,当我使用自动加载器自动加载我的类时,是否有必要使用 Doctrine 类加载器?如果是,这些行是否正确?

$classLoader = new ClassLoader('myApp\app\entity', APP_PATH . 'entity');
$classLoader->register();

$classLoader = new ClassLoader('myApp\core\entity', CORE_PATH . 'entity');
$classLoader->register();

编辑:我忘了添加一个实体类

使用 Doctrine\ORM\Mapping 作为 ORM;

/**
* @ORM\Entity
*/
class user
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

/**
* @ORM\Column(name="username", type="string", length=255)
*/
protected $username;

/**
* @ORM\Column(name="nicename", type="string", length=255)
*/
protected $nicename;

/**
* @ORM\Column(name="email", type="string", length=255)
*/
protected $email;

/**
* @ORM\Column(name="password", type="string", length=255)
*/
protected $password;

//getters
//setters

最佳答案

php > 8.0

你必须在 config/packages/doctrine.yaml 中将映射类型更改为 attribute


doctrine:
dbal:
url: '%env(resolve:DATABASE_URL)%'

# IMPORTANT: You MUST configure your server version,
# either here or in the DATABASE_URL env var (see .env file)
#server_version: '13'
orm:
auto_generate_proxy_classes: true
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
auto_mapping: true
mappings:
App:
is_bundle: false
type: attribute # from annotation to attribute
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
```

关于php - XXX 不是有效的实体或映射的父类(super class)//和配置选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13969719/

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