gpt4 book ai didi

symfony - 名为 'email' 的无效字段覆盖

转载 作者:行者123 更新时间:2023-12-02 18:02:23 29 4
gpt4 key购买 nike

我正在尝试覆盖 FOSUserBundle 的用户映射的两个属性。

use FOS\UserBundle\Model\User as BaseUser;
...
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
* @ORM\Table(name="user")
* @UniqueEntity(
* fields={"emailCanonical", "zone"},
* errorPath="email",
* message="This email address is already in use."
* )
* @ORM\AttributeOverrides({
* @ORM\AttributeOverride(name="email", column=@ORM\Column(type="string", name="email", length=255, unique=false, nullable=false)),
* @ORM\AttributeOverride(name="emailCanonical", column=@ORM\Column(type="string", name="emailCanonical", length=255, unique=false, nullable=false))
* })
*/
class User extends BaseUser
{
...

一切似乎都工作正常,除了当我生成访问器时:名为“email”的无效字段覆盖

这里抛出错误:

// Doctrine\ORM\Mapping\ClassMetadataInfo

public function setAttributeOverride($fieldName, array $overrideMapping)
{
if ( ! isset($this->fieldMappings[$fieldName])) {
throw MappingException::invalidOverrideFieldName($this->name, $fieldName);
}

这里,$this->fieldMappings 仅包含我的子 User 的字段,而不包含父级(映射的父类(super class))的字段。

有人知道吗?

最佳答案

我设法通过类 [class] 的名为 [field] 的无效字段覆盖来解决此问题,方法是还在我覆盖的类中添加覆盖的属性。

我使用的版本是 Symfony v2.7.8Doctrine v1.6.1

示例:

<?php

use FOS\UserBundle\Model\User as BaseUser;

/**
* @ORM\Entity
* @ORM\Table(name="user")
*
* @ORM\HasLifecycleCallbacks
* @ORM\AttributeOverrides({
* @ORM\AttributeOverride(name="usernameCanonical",
* column=@ORM\Column(
* type="string",
* name="username_canonical",
* length=255,
* unique=false
* )
* )
* })
*/
class User extends BaseUser
{
/**
* @var string
*
* @ORM\Column(type="string", name="username_canonical", length=255, unique=false)
*/
protected $usernameCanonical;
...
}

关于symfony - 名为 'email' 的无效字段覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27024332/

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