Sylius+FOS+PUGX Multi User: Overriding User Model

2019-06-11 06:55发布

问题:

Sylius with FOS and PUGX MultiUser Bundle that allows registering of 3 different users via 3 different forms, with 3 different roles, etc. Since Sylius User is defined as:

->Sylius\Component\Core\Model\User.php

namespace Sylius\Component\Core\Model;

use FOS\UserBundle\Model\User as BaseUser;
use Sylius\Component\Addressing\Model\AddressInterface;

class User extends BaseUser implements UserInterface{
...
}

Since userOne and userTwo are supposed to extend an abstract class, as per PUGX multiuser Bundle docs, we have:

->Acme\UserBundle\Entity\User.php

namespace Acme\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Sylius\Component\Core\Model\User as BaseUser;

/**
 * @ORM\Entity
 * @ORM\Table(name="sylius_user_pugx")
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="type", type="string")
 * @ORM\DiscriminatorMap({"userone" = "Acme\UserBundle\Entity\userOne", "userTwo" = "Acme\UserBundle\Entity\userTwo", "userThree" = "Acme\UserBundle\Entity\Admin"})
 *
 */
abstract class User extends BaseUser {...}

So now we only need, our REAL final classes:

->Acme\UserBundle\Entity\userOne.php

namespace Acme\UserBundle\Entity;

use Mod\UserBundle\Entity\User as User;

/**
 * @ORM\Entity
 * @ORM\Table(name="userOne")
 * @UniqueEntity(fields = "username", targetClass = "Acme\UserBundle\Entity\User", message="fos_user.username.already_used")
 * @UniqueEntity(fields = "email", targetClass = "Acme\UserBundle\Entity\User", message="fos_user.email.already_used")
 */
class userOne extends User {..}

So we are extending this way: userOne extends 'Abstract User' extends 'Sylius User' extends 'FOS User'.

But I can't update my schema: The table with name 'bbdd.sylius_user_address' already exists

What am I doing wrong? Isn't it the logical way the user classes should extend each other?