Doctrine QueryBuilder - 用表'state'变量苦苦挣扎

时间:2015-08-07 11:51:41

标签: doctrine-orm query-builder

我有以下查询,最后一部分是检查项目的状态是1还是0;

  

我的api电话:   http://example.com/api/search?keyword=someword&search_for=item&return_product

除了一件事,查询按预期工作。一些石头物品被禁用,我需要忽略其中:

  ->where('S.state=:state')
  ->setParameter('state' , 1 )

我不太确定将其添加到当前查询的位置以使其起作用:

$qb = $this->stoneRepository->createQueryBuilder('S');

//Get the image for the item
$qb->addSelect('I')
->leftJoin('S.image' , 'I');

//Check if we want products returned
if ( $return_product )
{
      $qb->addSelect('P','PI')
      ->leftJoin('S.product'   , 'P')
      ->leftJoin('P.image'     , 'PI');
 }

 //Check is we want attributes returned
 if ( $return_attribute )
 {
     $qb->addSelect('A','C')
     ->leftJoin('S.attribute' , 'A')
     ->leftJoin('A.category'  , 'C');
 }

//Check the fields for matches
$qb->add('where' , $qb->expr()->orX(
          $qb->expr()->like('S.name' , ':keyword'),
          $qb->expr()->like('S.description' , ':keyword')
        )
);

//Set the search item
$qb->setParameter('keyword', '%'.$keyword.'%');
$qb->add('orderBy', 'S.name ASC');

1 个答案:

答案 0 :(得分:0)

createQueryBuilder来电之后:

$qb = $this->stoneRepository
    ->createQueryBuilder('S')
    ->where('S.state = :state')
    ->setParameter('state', 1);

使用查询构建器,顺序并不重要:您可以按不同顺序添加SQL部分,甚至覆盖已添加的部分。