【发布时间】:2014-02-27 11:40:41
【问题描述】:
非常非常奇怪。我从教义中使用了这种方法数百次。我有一个简单的控制器,它以 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'
));
// ...
}
生成的查询如下
[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 = ? LIMIT 1' 带参数 ["2"]:
SQLSTATE[42S22]:找不到列:1054 'where 子句'中的未知列 't0.id' +
抛出的错误是有道理的,因为它在查看“WHERE t0.id”时应该查看“WHERE t1.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;
我有 3 个实体可以扩展用户(客户、管理员和卖家)。
【问题讨论】:
-
您可以添加您所指的实体吗?
-
@byf-ferdy 我可以,但它就像 100 行一样长 + 它扩展了我的用户,这是另外 100 行。您希望看到的实体中有什么具体内容吗?
-
id如果不寻常的话会很有趣。除此之外,您是否尝试过清除cache?我想不出更多了。 -
通过扩展我的用户你的意思是你有一个数据库级别的关系?这两个实体在 mysql 级别上是如何表示的?
-
好吧,既然你谈到了它,这是我第一次扩展 Doctrine 实体。所以这可能是我遇到问题的原因。给我一分钟,我会发布它的样子。
标签: symfony doctrine-orm