Symfony2 SQLSTATE [42S22]:未找到列:1054 未知列
Symfony2 SQLSTATE[42S22]: Column not found: 1054 Unknown column
我正在尝试创建一种待办事项列表应用程序。目前我只是试图根据用户实例化的用户 ID 输出所有任务。我在使用 $user->getId()
作为 user_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 和 Task 之间的关系在我的数据库中创建了一个名为 user_id
的列。因此,我不得不将任务实体中的列名称从 user
更改为 user_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,
));
当我忘记 doctrine:schema:update --force
时,我经常会遇到这个错误
我正在尝试创建一种待办事项列表应用程序。目前我只是试图根据用户实例化的用户 ID 输出所有任务。我在使用 $user->getId()
作为 user_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 和 Task 之间的关系在我的数据库中创建了一个名为 user_id
的列。因此,我不得不将任务实体中的列名称从 user
更改为 user_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,
));
当我忘记 doctrine:schema:update --force