FosUserBundle を Sylius で使用し、PUGXMultiUserBundle を使用して複数のタイプのユーザー (ロール) を作成するときに、ユーザーの登録を行うときに問題が発生します。
User.php :
namespace Sylius\Bundle\CoreBundle\Model;
use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use FOS\UserBundle\Model\User as BaseUser;
use Sylius\Bundle\AddressingBundle\Model\AddressInterface;
/**
* @ORM\Entity(repositoryClass="App\myBundle\Entity\UserRepository")
* @ORM\Table(name="sylius_user")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="user_type", type="string")
* @ORM\DiscriminatorMap({"student" = "StudentUser", "partner" = "PartnerUser"})
abstract class User extends BaseUser implements UserInterface
{
protected $firstName;
protected $lastName;
protected $createdAt;
protected $updatedAt;
protected $currency;
protected $orders;
protected $billingAddress;
protected $shippingAddress;
protected $addresses;
.....
StudentUser.php:
use Doctrine\ORM\Mapping as ORM;
use PUGX\MultiUserBundle\Validator\Constraints\UniqueEntity;
use Sylius\Bundle\CoreBundle\Model\User;
/**
* @ORM\Entity(repositoryClass="App\MyBundle\Entity\UserRepository")
* @ORM\Table(name="sylius_user_staff")
* @UniqueEntity(fields = "username", targetClass = "Sylius\Bundle\CoreBundle\Model\User", message="fos_user.username.already_used")
* @UniqueEntity(fields = "email", targetClass = "Sylius\Bundle\CoreBundle\Model\User", message="fos_user.email.already_used")
*/
class StudentUser extends User
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
したがって、新しい学生を登録しようとすると、次のエラーが発生します。
SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.username_canonical' in 'where clause'
つまり、User.php クラス (Sylius\Bundle\CoreBundle\Model) で username_canonical が見つからず、FosUserBundle の User.php calss から拡張することを拒否したことを直接意味しますか?誰か解決策を教えてください。