我正在尝试使用Doctrine生成用于新应用程序的实体。我之前使用过Doctrine,从来没有遇到过这个问题,而且我似乎找不到为什么在网上发生这种情况的答案。
我目前在Ubuntu 17.10上使用PHP-7.2和Doctrine版本doctrine/orm: ^2.5
运行它。
php vendor/bin/doctrine orm:convert-mapping --from-database php models/mapping
然后在制作映射文件后,它看起来像这样:
<?php
use Doctrine\ORM\Mapping\ClassMetadataInfo;
$metadata->setInheritanceType(ClassMetadataInfo::INHERITANCE_TYPE_NONE);
$metadata->setPrimaryTable(array(
'name' => 'subscriptions',
));
$metadata->setChangeTrackingPolicy(ClassMetadataInfo::CHANGETRACKING_DEFERRED_IMPLICIT);
$metadata->mapField(array(
'fieldName' => 'id',
'columnName' => 'id',
'type' => 'integer',
'nullable' => false,
'options' =>
array(
'unsigned' => false,
),
'id' => true,
));
$metadata->mapField(array(
'fieldName' => 'site',
'columnName' => 'site',
'type' => 'string',
'nullable' => false,
'length' => 25,
'options' =>
array(
'fixed' => false,
),
));
$metadata->mapField(array(
'fieldName' => 'endpoint',
'columnName' => 'endpoint',
'type' => 'string',
'nullable' => false,
'length' => 45,
'options' =>
array(
'fixed' => false,
),
));
$metadata->mapField(array(
'fieldName' => 'userpublickey',
'columnName' => 'userPublicKey',
'type' => 'string',
'nullable' => false,
'length' => 255,
'options' =>
array(
'fixed' => false,
),
));
$metadata->mapField(array(
'fieldName' => 'userauthtoken',
'columnName' => 'userAuthToken',
'type' => 'string',
'nullable' => false,
'length' => 255,
'options' =>
array(
'fixed' => false,
),
));
$metadata->setIdGeneratorType(ClassMetadataInfo::GENERATOR_TYPE_IDENTITY);
然后我尝试运行此命令:
php vendor/bin/doctrine orm:generate-entities --generate-annotations=true models/entities
我收到一条错误声明:
PHP Notice: Undefined variable: metadata
有谁知道为什么Doctrine会生成一个具有未定义变量的映射,以及我要做些什么来修复它?