Doctrine QueryBuilder - 与 table 'state' 变量作斗争

Doctrine QueryBuilder - Struggling with table 'state' variable

我有以下查询,它的最后一部分是检查项目的状态,该状态将为 1 或 0;

My api calls: 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');

就在 createQueryBuilder 调用之后:

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

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