我无法在ManyToMany关系中加入表格(Products
和Category
)。
我尝试加入时收到此错误消息
[Syntax Error] line 0, col 511: Error: Expected Literal, got 'JOIN'
我的存储库
public function GetProductsList($productid){
$fields = array['product.product','category.category']
$query = $this->getEntityManager()->createQueryBuilder()
->select($fields)
->from('TestMyBundle:product','product')
->innerJoin('TestMyBundle:category','category')
->where('product.productid=:productid')
->setParameter('productid',$productid)
->getQuery()
->getResult();
return $query;
}
答案 0 :(得分:0)
您的加入看起来不对,我不明白为什么您需要一个硬编码阵列。也可以直接将实体别名放在select中。我会把它写成:
public function GetProductsList($productid){
$result = $this->getEntityManager()->createQueryBuilder()
->select('product', 'category')
->from('TestMyBundle:product','product')
->join('product.categories','category') // making an assumption your product entity has getCategories()
->where('product.productid=:productid')
->setParameter('productid',$productid)
->getQuery()
->getResult();
return $result;
}
那应该工作。
请注意,当您遇到这样的问题时,执行类似 - > getSQL()而不是getQuery()和var_dump的SQL会查看查询构建器生成的内容,这样可以更轻松地进行调试。