Symfony2 SQLSTATE[42S22]:未找到列:1054未知列

Symfony2 SQLSTATE[42S22]:未找到列:1054未知列,symfony,dql,Symfony,Dql,我正在尝试创建一个类似于待办事项列表的应用程序。目前,我正试图根据用户实例用户id输出所有任务。使用$user->getId()作为用户id的参数编写查询时遇到一些问题 以下是我所拥有的: public function indexAction() { $user = $this->getUser(); //var_dump($user); $em = $this->getDoctrine()->getManager()

我正在尝试创建一个类似于待办事项列表的应用程序。目前,我正试图根据用户实例用户id输出所有任务。使用
$user->getId()
作为用户id的参数编写查询时遇到一些问题

以下是我所拥有的:

public function indexAction()
    {
        $user = $this->getUser();
        //var_dump($user);

        $em = $this->getDoctrine()->getManager();
        $query = $em->createQuery(
            'SELECT p
            FROM TaskBundle:Task p
            WHERE p.user_id = :user_id'
        )->setParameter('user_id', $user->getId());

        $tasks = $query->getResult();

        return $this->render('Default/index.html.twig', array(
                'tasks' => $tasks,
        ));
    }
我尝试过QueryBuilder和DQL,但得到了相同的错误

An exception occurred while executing 'SELECT t0_.id AS id0, t0_.name AS name1, t0_.done AS done2, t0_.created AS created3, t0_.updated AS updated4, t0_.user_id_id AS user_id_id5 FROM tasks t0_ WHERE t0_.user_id_id = ?' with params [1]:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0_.user_id_id' in 'field list'

您的实体应该类似于:

Task{
 private $user;
 .....
}

User{
 ....`enter code here`
}
您可以试试:

$query = $em->createQuery(
            'SELECT p
            FROM TaskBundle:Task p
            WHERE p.user = :user'
        )->setParameter('user', $user);

用户和任务之间的关系在我的数据库中创建了一个名为
User\u id
的列。因此,我必须将任务实体中的列名从
user
更改为
user\u id
。但是,我不必这样做,所以我恢复了更改,查询现在可以工作了

Entity/Task.php

/**
     * @ORM\ManyToOne(targetEntity="Todo\UserBundle\Entity\User", inversedBy="")
     * @ORM\JoinColumn()
     */
    private $user;
Entity/User.php

/**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\OneToMany(targetEntity="Todo\UserBundle\Entity\Task", mappedBy="user")
     */
    protected $id;
查询:

$em = $this->getDoctrine()->getManager();
            $query = $em->createQuery(
                'SELECT p
            FROM TaskBundle:Task p
            WHERE p.user = :user'
            )->setParameter('user', $user->getId());

            $tasks = $query->getResult();

            return $this->render('Default/index.html.twig', array(
                'tasks' => $tasks,
            ));

当我忘记了
原则:模式:更新--force

任务表中是否有列user\u id\u id时,经常会出现此错误?我想不是。您必须更改实体TaskBundle:Task中的映射。可能您在@ORM\column注释中有错误的列名。您是正确的,谢谢。基本上,我认为我必须像在数据库中一样,将列名从user改为user\u id,但显然你不知道如果问题解决了,你应该关闭你的问题,因为它是基于你的打字错误。这不是一个打字错误,而是对原则的误解。检查我的答案以获得修复亲爱的Tom,我的答案有什么问题?$user和$user->getId()不管怎样,这都是实体内部的一个问题。我刚才给了实体一个例子,我想大家都知道。您已经将映射编写为注释。它也将是yml格式等。