具有ManyToOne关系的FOSUserBundle实体

时间:2013-10-06 21:00:21

标签: symfony doctrine-orm fosuserbundle

我有扩展FOSUser的AbstractUser超类,然后我有实体扩展AbstractUser与该类相关的字段。例如,Customer与City实体具有ManyToOne关系。

现在,当我尝试使用FOSUser登录表单登录时,我收到错误:

.... SQLSTATE [42S22]:未找到列:1054'字段列表'中的未知列't0.city'

当然,users表中没有city字段,因为它是名为city_id的关系列。任何人都可以为我说明为什么教义建立像这样的查询?我错过了什么吗?

提前致谢。

以下是相关的代码部分。

AbstractUser:

/**
 * @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;

    ....
}

2 个答案:

答案 0 :(得分:1)

我认为$city$customers的曝光度必须受到保护,而非隐私。

答案 1 :(得分:0)

对不起,我很抱歉。这是我的错,我打开了doctrine缓存(并且结果btw印象深刻)。 在试图理解为什么会发生这种情况时,几乎抓住了我脑袋里的洞。幸运的是,我遇到了另一个错误,那就是教义和apc。瞧!这给了我一个线索在哪里看。