symfony无法在manytomany关系中加入相关表

时间:2015-11-18 19:27:01

标签: mysql symfony doctrine

我无法在ManyToMany关系中加入表格(ProductsCategory)。

My Entities

我尝试加入时收到此错误消息

[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;

}

1 个答案:

答案 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会查看查询构建器生成的内容,这样可以更轻松地进行调试。