我已经定义了一个实体
将Doctrine \ ORM \ Mapping用作ORM;
/**
* UmMemberSectionInfo
*
* @Table(name="um_member_section_info")
* @Annotations\CharDependent(reflect="TbContentcharset")
* @Entity
*/
class UmMemberSectionInfo extends \DoctrineHelper
{
//some code
}
和注释
namespace Annotations;
use Doctrine\Common\Annotations\Annotation;
/**
* @Annotation
* @Target("CLASS")
*/
final class CharDependent extends Annotation{
public $reflect;
}
并将其视为
$reader = new AnnotationReader();
$reflectionObj = new \ReflectionObject(new $entity);
$annot = $reader->getClassAnnotation($reflectionObj, '\\Annotations\\CharDependent');
var_dump($annot->reflect);
if ($annot instanceof \Annotations\CharDependent) {}
然而,它只是一个错误,The annotation "@Table" in class UmMemberSectionInfo was never imported.
,当我关闭CharDependent
注释并将其用作原始注释时,将不会显示该错误。问题是什么?为什么我使用原件时没问题呢?
答案 0 :(得分:1)
您必须在命名空间中使用完整的注释名称:
@Doctrine\ORM\Mapping\Table
但您导入了use Doctrine\ORM\Mapping as ORM;
,因此您可以使用该别名:
@ORM\Table
如果您想使用简短@Table
,则必须导入Table
类:
use Doctrine\ORM\Mapping\Table;
您必须对@Entity
执行相同操作。