Symfony Doctrine - 如果在查询生成器中



我想通过一个字段的结果从另一个字段中选择连接的表。

详细地有一个字段 catId。这是前面带有字母 s 或 c 的类别的 id。如果有像 c6 这样的 c,我必须加入类别表并在那里查找 id。如果是 s,我必须加入子类别表并查找 id。所以我也必须在结果前面剪掉字母。

如何在查询生成器中直接在代码中执行此操作?我希望这能解释它:

public function contentByNId($NId)
{
    return $this->createQueryBuilder('c')
        ->where('c.news = :news')
        ->setParameter('news', $NId)
        // the result from c.catId as a number with s for subcategory or c for category in front. like s21 or c6
        // if in c.catID is an s than
        // cut the letter (s or c) from c.catId for the leftJoin to  replacedCatID
        ->leftJoin('AppBundle:subcategories', 's', 'WITH', 'c.replacedCatID = s.id')
        //
        //
        //  else
        //
        //
        ->leftJoin('AppBundle:categories', 's', 'WITH', 'c.replacedCatID = s.id')
        //
        //
        ->addSelect(
            'c',
            's.headline'
        )
        ->getQuery()
        ->getArrayResult();
}
public function contentByNId($NId)
{
    $qb = $this->createQueryBuilder('c');
    .....................
    if(//your logic) {
        .....................
        $qb->leftJoin('AppBundle:subcategories', 's', 'WITH', 'c.replacedCatID = s.id')
        .................................
    }
    else {
        .....................
        $qb->leftJoin('AppBundle:categories', 's', 'WITH', 'c.replacedCatID = s.id')
        .................................
    }
    return $qb->getQuery();
}

相关内容

  • 没有找到相关文章