FOSUser を拡張する AbstractUser スーパー クラスがあり、そのクラスに関連するフィールドで AbstractUser を拡張するエンティティがあります。たとえば、Customer は City エンティティに対して ManyToOne の関係を持っています。
FOSUserログインフォームでログインしようとすると、エラーが発生します:
.... SQLSTATE[42S22]: 列が見つかりません: 1054 'フィールド リスト' の不明な列 't0.city'
もちろん、users テーブルには city フィールドはありません。これは、city_id という名前のリレーション カラムであるためです。教義がこのようなクエリを構築する理由を誰かが私に光を当てることができますか? 何か不足していますか?
前もって感謝します。
関連するコード部分は次のとおりです。
抽象ユーザー:
/**
* @ORM\Table(name="users")
* @ORM\Entity
* @ORM\MappedSuperclass
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"admin"="Admin", "customer"="Customer", "seller"="Seller"})
*/
abstract class AbstractUser extends FOSUser
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
}
}
お客様:
/**
* @ORM\Entity
*/
class Customer extends AbstractUser {
....
/**
* @var City $city
* @ORM\ManyToOne(targetEntity="City", inversedBy="customers")
*/
private $city;
....
}
街:
/**
* @ORM\Table(name="city")
* @ORM\Entity
*/
class City
{
....
/**
* @var ArrayCollection $customers
* @ORM\OneToMany(targetEntity="Customer", mappedBy="city")
*/
private $customers;
....
}