-1

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;

    ....
}
4

2 に答える 2

1

私は、可視性はプライベートではなく、保護されなければならない$cityと信じています。$customers

于 2013-10-07T01:01:41.410 に答える
0

お騒がせしてすみません。これは、ドクトリン キャッシュを有効にした (そして結果に感心した) 私のせいです。なぜこれが起こっているのかを理解しようとしている間、頭の穴をほとんど引っ掻きました。幸いなことに、ドクトリンと apc に関する別のエラーに遭遇しました。出来上がり!それは私にどこを見るべきかの手がかりを与えました。

于 2013-10-07T16:51:02.010 に答える