Doctrine查询崩溃

Mic*_*uve 5 symfony doctrine-orm

非常非常奇怪.我已经从教义中使用了这种方法数百次.我有一个简单的控制器,它将id作为参数.Doctrine生成的查询是错误的并且崩溃.

/**
 * @Security("has_role('ROLE_ADMIN')")
 * @return Response
 */
public function editSellerAction($id)
{
    $em  = $this->getDoctrine()->getManager();
    $seller = $em->getRepository('SiteUserBundle:Seller')->find($id);

    // ...
    $form = $this->createForm(new SellerType(), $seller, array(
        'method' => 'POST'
    ));
    // ...
}
Run Code Online (Sandbox Code Playgroud)

生成的查询如下

[2/2] DBALException:执行'SELECT t1.id AS id2,t1.username AS username3,t1.password AS password4,t1.firstname AS firstname5,t1.lastname AS lastname6 FROM seller t1 WHERE t0 .id时发生异常=?使用params ["2"]限制1':

SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列't0.id'+

抛出的错误是有道理的,因为当它应该查看"WHERE t1.id"时它正在查看"WHERE t0.id".我使用phpmyadmin尝试了t1的查询,它的工作原理.

知道什么可能导致这个问题吗?

/**
 * Seller have access to their customer and are able to RW access to the customers
 *
 * @ORM\Table("seller")
 * @ORM\Entity
 * @author Michael Villeneuve
 */
class Seller extends User
{

    /**
     * @var array
     * 
     * @ORM\OneToMany(targetEntity="Customer", mappedBy="seller", cascade={"persist", "remove"})
     * @ORM\JoinColumn(name="seller_id", referencedColumnName="id")
     **/
    protected $customers; 

    /**
     * @var string
     *
     * @ORM\Column(name="firstname", type="string", length=255, nullable=false)
     */
    protected $firstname;

    /**
     * @var string
     *
     * @ORM\Column(name="lastname", type="string", length=255, nullable=false)
     */
    protected $lastname;

    // Other attributes and only getters/setter


/**
 *
 * @ORM\Entity
 */
class User implements UserInterface
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255, unique=true)
     */
    private $username;

    /**
     * @ORM\Column(type="string", length=64)
     */
    private $password;
Run Code Online (Sandbox Code Playgroud)

我有3个实体扩展了用户(客户,管理员和卖家).

Cer*_*rad 10

更新链接:https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/inheritance-mapping.html

阅读一下映射的超类:http://docs.doctrine-project.org/en/latest/reference/inheritance-mapping.html.基本上,您的抽象基本用户类本身不能是实体.

所以从你的User类中取出@ORM\Entity行.这就是表0(t0)的来源.