一对一关系的映射无效



我试图在两个Entities之间创建一对一双向映射,但我得到的是这个错误:

# app/console doctrine:schema:validate --env=dev_local
[Mapping]  FAIL - The entity-class 'BelkaAuthBundleEntityGlobaltoken' mapping is invalid:
* The association BelkaAuthBundleEntityGlobaltoken#user refers to the inverse side field BelkaAuthBundleEntityUser#globaltoken which does not exist.
[Mapping]  FAIL - The entity-class 'BelkaAuthBundleEntityUser' mapping is invalid:
* The mappings BelkaAuthBundleEntityUser#globalToken and BelkaAuthBundleEntityGlobaltoken#user are inconsistent with each other.

这些是我的实体:

用户实体

/**
 * @ORMEntity
 * @ORMTable(name="app_auth.""User""", schema="app_auth")
 * @ORMEntity(repositoryClass="UserRepository")
 * @UniqueEntity("username", groups={"strict"})
 * @UniqueEntity("email", groups={"strict"})
 * @AssertGroupSequence({"User", "strict"})
 */
class User implements EncoderAwareInterface
{
    /**
     * @ORMId
     * @ORMColumn(type="string")
     * @AssertNotBlank(message = "user.username.not_blank")
     * @ORMGeneratedValue(strategy="NONE")
     * @SerializerGroups({"default"})
     */
    private $username;
    /**
     * @ORMId
     * @ORMColumn(type="string")
     * @AssertNotBlank(message = "user.email.not_blank")
     * @AssertEmail(message = "user.email.not_valid")
     * @SerializerGroups({"default"})
     */
    private $email;
    /**
     * @ORMColumn(type="string", nullable=true)
     * @SerializerGroups("personal")
     */
    private $password;
    /**
     * @ORMColumn(type="string")
     * @SerializerGroups({"default"})
     */
    private $name;
    /**
     * @ORMColumn(type="string")
     * @SerializerGroups({"default"})
     */
    private $surname;
    /**
     * @ORMColumn(type="string", length=5)
     * @SerializerGroups({"default"})
     */
    private $lang;
    /**
     * @ORMColumn(type="boolean")
     * @SerializerGroups({"strict_adm"})
     */
    private $deleted = false;
    /**
     * @ORMOneToOne(targetEntity="Globaltoken", mappedBy="user", cascade={"persist"})
     * @SerializerGroups({"strict"})
     */
    private $globalToken;
    <removed methods>
    }

Globaltoken实体

/**
 * @ORMEntity
 * @ORMTable(name="app_auth.""Globaltoken""", schema="app_auth")
 * @ORMEntity(repositoryClass="GlobaltokenRepository")
 * @UniqueEntity("token", groups={"strict"})
 * @UniqueEntity("last_use", groups={"strict"})
 * @AssertGroupSequence({"Globaltoken", "default", "strict"})
 * @ORMHasLifecycleCallbacks()
 */
class Globaltoken
{
    //10 minutes, expressed in seconds
    const VALIDITYINTERVAL = 600;
    /**
     * @ORMId
     * @ORMColumn(type="string")
     * @ORMGeneratedValue(strategy="NONE")
     * @SerializerGroups({"strict"})
     */
    private $token;
    /**
     * @ORMOneToOne(targetEntity="User", inversedBy="globaltoken")
     * @ORMJoinColumns({
     *       @ORMJoinColumn(name="owned_by_username", referencedColumnName="username"),
     *       @ORMJoinColumn(name="owned_by_email", referencedColumnName="email")
     * })
     * @SerializerGroups({"strict"})
     */
    private $user;
    /**
     * @ORMColumn(type="datetime")
     * @AssertNotBlank()
     * @SerializerGroups({"strict"})
     */
    private $last_use;
    /**
     * @SerializerGroups({"default"})
     */
    private $expiring;
    <removed methods>
    }

你认为可能是什么?

明白了。大写字母的拼写错误是造成一切的原因:

User::globalToken不是inversedBy="globaltoken"所期望的。User::globaltoken是.

我陷入了IT开发中最经典的陷阱之一,我想说这可能会让你分心。我对PHPStorm对Symfony注释的支持感到非常失望。

最新更新