首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >理论ORM问题:[语义错误]注释不存在,或者不能自动加载。

理论ORM问题:[语义错误]注释不存在,或者不能自动加载。
EN

Stack Overflow用户
提问于 2019-07-26 13:59:24
回答 2查看 939关注 0票数 0

我现在遇到的问题。

代码语言:javascript
运行
复制
Error Encounter: [Semantical Error] The annotation "@Doctrine\ORM\Mapping\Id_users" in property Users\Entity\User::$id_users does not exist, or could not be auto-loaded.

我的实体PHP代码:

代码语言:javascript
运行
复制
<?php

declare(strict_types=1);

namespace Users\Entity;

use Doctrine\ORM\Mapping as ORM;


/**
 * http://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/basic-mapping.html
 * @ORM\Entity
 * @ORM\Table(name="users")
 */

class User
{
    /**
     * @ORM\Id_users
     * @ORM\Column(type="integer", name="id_users", nullable=false)
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $id_users;

    /**
     * @ORM\Username
     * @ORM\Column(type="varchar", name="username", nullable=false)
     */
    protected $username;

    /**
     * @ORM\Password
     * @ORM\Column(type="varchar", name="password", nullable=false)
     */
    protected $password;

    /**
     * @ORM\Email
     * @ORM\Column(type="varchar", name="email", nullable=false)
     */
    protected $email;

    /**
     * @ORM\Status
     * @ORM\Column(type="integer", name="status", nullable=false)
     */
    protected $status;

    /**
     * @ORM\Date_created
     * @ORM\Column(type="datetime", name="date_created", nullable=false)
     */
    protected $date_created;

    /**
     * @ORM\Date_updated
     * @ORM\Column(type="datetime", name="date_updated", nullable=true)
     */
    protected $date_updated;

    /**
     * @return int
     */
    public function getIdUsers()
    {
        return $this->id_users;
    }

    /**
     * @param int $id_users
     */
    public function setIdUsers($id_users): void
    {
        $this->id_users = $id_users;
    }



    /**
     * @return mixed
     */
    public function getUsername()
    {
        return $this->username;
    }

    /**
     * @param mixed $username
     */
    public function setUsername($username): void
    {
        $this->username = $username;
    }

    /**
     * @return mixed
     */
    public function getPassword()
    {
        return $this->password;
    }

    /**
     * @param mixed $password
     */
    public function setPassword($password): void
    {
        $this->password = $password;
    }

    /**
     * @return mixed
     */
    public function getEmail()
    {
        return $this->email;
    }

    /**
     * @param mixed $email
     */
    public function setEmail($email): void
    {
        $this->email = $email;
    }

    /**
     * @return mixed
     */
    public function getStatus()
    {
        return $this->status;
    }

    /**
     * @param mixed $status
     */
    public function setStatus($status): void
    {
        $this->status = $status;
    }

    /**
     * @return \DateTime
     */
    public function getDateCreated(): \DateTime
    {
        return $this->date_created;
    }

    /**
     * @param \DateTime $date_created
     * @throws \Exception
     */
    public function setDateCreated(\DateTime $date_created = null): void
    {
        if (!$date_created && empty($this->getIdUser())) {
            $this->date_created = new \DateTime("now");
        } else {
            $this->date_created = $date_created;
        }
    }

    /**
     * @return \DateTime
     */
    public function getDateUpdated(): \DateTime
    {
        return $this->date_updated;
    }

    /**
     * @param \DateTime $date_updated
     * @throws \Exception
     */
    public function setDateUpdated(\DateTime $date_updated = null): void
    {
        if ($date_updated) {
            $this->date_updated = new \DateTime("now");
        } else {
            $this->date_updated = $date_updated;
        }
    }



}

下面是我的Config提供者代码段的一个片段:

代码语言:javascript
运行
复制
    public function getDoctrineEntities() : array
    {
        return [
            'driver' => [
                'orm_default' => [
                    'class' => MappingDriverChain::class,
                    'drivers' => [
                        'Users\Entity' => 'user_entity',
                    ],
                ],
                'user_entity' => [
                    'class' => AnnotationDriver::class,
                    'cache' => 'array',
                    'paths' => [__DIR__ . '/Entity'],
                ]
            ]
        ];
    }

我已经尝试重命名一个更新,我的标签和变量,但我似乎不能消除这个问题。有没有我错过的配置?我在使用最新版本的Zend表情。如有任何建议和意见,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-27 14:36:11

@ORM\Id_users注释无效。id字段的正确注释是@ORM\Id。它与属性的名称无关,但它是用来指示属性是主键的。

带注释的实例变量将被标记为实体标识符,即数据库中的主键。这个注释只是一个标记,没有必需的或可选的属性。对于具有多个标识符列的实体,每个列都必须标记为@Id。

正如for所说的,您应该删除所有其他属性的@ORM\{property name}。在教条法团中可以找到一个完整的有效注释列表。

票数 1
EN

Stack Overflow用户

发布于 2019-07-27 10:15:11

在教义中确实没有这样的注解。

您需要从类中删除所有类似于注释。

例如,在错误消息@ORM\Id_users中提到了一个Doctrine,它属于$id_users属性。如果要删除它,则Doctrine将报告关于下一个@ORM\Username的错误,等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57221612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档