Question

My problem is quite simple but i search for an hour without succeed, i would like to add some constraint to the UserEntity. For example, i would like to limit the length of a username

I think the best way is to not touche FOS in Vendor. I have create my own userBundle with my own layout.html etc ... But i cannot override attribut who is already existing in FosuserBundle (it's working for the layout overriding btw my userBundle is a child of FOS) the funny thing is "id" has no problem for the overriding

My User entity :

<?php

namespace Diane\UserBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**

 * User
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Diane\UserBundle\Entity\UserRepository")
 */
class User extends BaseUser
{
    /**

     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     * @ORM\Column(name="username", type="string", length=10)
     */
    protected $username;

}

Fos User model :

<?php

namespace FOS\UserBundle\Model;

use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;

abstract class User implements UserInterface, GroupableInterface
{
    protected $id;

    /**
     * @var string
     */
    protected $username;


...

}

i have already try to remove :

/**
 * @var string
 */

Error message :

Doctrine\ORM\Mapping\MappingException] Duplicate definition of column 'username' on entity 'Diane\UserBundle\Entity\User' in a field or discriminator column mapping.

Thanks for any idea you could give me

Was it helpful?

Solution

Try AttributeOverrides Doctrine annotation:

/**
 * User
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Diane\UserBundle\Entity\UserRepository") / class User extends 
 *
 * @ORM\AttributeOverrides({
 *      @ORM\AttributeOverride(name="username",
 *          column=@ORM\Column(
 *              name     = "username",
 *              type     = "string",
 *              length   = 10
 *          )
 *      )
 * })
 *
 */
class User extends BaseUser
{
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top