我有以下查询,最后一部分是检查项目的状态是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');
答案 0 :(得分:0)
在createQueryBuilder
来电之后:
$qb = $this->stoneRepository
->createQueryBuilder('S')
->where('S.state = :state')
->setParameter('state', 1);
使用查询构建器,顺序并不重要:您可以按不同顺序添加SQL部分,甚至覆盖已添加的部分。