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 个部分,甚至可以覆盖已添加的部分。
我有以下查询,它的最后一部分是检查项目的状态,该状态将为 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 个部分,甚至可以覆盖已添加的部分。