Tho*_*s K 4 annotations symfony doctrine-orm
我试图覆盖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
{
...
Run Code Online (Sandbox Code Playgroud)
一切似乎工作正常,除非我生成访问器: Invalid field override named 'email'
这里抛出错误:
// Doctrine\ORM\Mapping\ClassMetadataInfo
public function setAttributeOverride($fieldName, array $overrideMapping)
{
if ( ! isset($this->fieldMappings[$fieldName])) {
throw MappingException::invalidOverrideFieldName($this->name, $fieldName);
}
Run Code Online (Sandbox Code Playgroud)
这里,$this->fieldMappings只包含我的子User的字段而不包含父(映射的超类)的字段.
有人知道吗?
小智 6
我设法使用Invalid字段覆盖类[class]的名为[field]的方法来修复此问题的方法是在类I中添加覆盖的属性覆盖它.
我正在使用版本Symfony v2.7.8和Doctrine 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;
...
}
Run Code Online (Sandbox Code Playgroud)
编辑:
你是对的,FOSUserBundle/Resources/config/doctrine/model/User.orm.xml 中有映射信息...
<mapped-superclass name="FOS\UserBundle\Model\User">
...
<field name="usernameCanonical" column="username_canonical" type="string" length="255" unique="true" />
<field name="email" column="email" type="string" length="255" />
Run Code Online (Sandbox Code Playgroud)
只是猜测:也许这个 xml orm 配置没有正确解析?或者也许您也需要在 xml 中进行覆盖?
| 归档时间: |
|
| 查看次数: |
3908 次 |
| 最近记录: |