一个数据库的产品具有很多选项,其中两个是选项1和选项2。我需要进行查询(我知道如何构建整个产品,我只遵循以下逻辑)仅在以下位置显示此类产品:
我尝试过:
function GetProducts(keywords) {
...
->andWhere($qb->expr()->orX(
$qb->expr()->eq('option1', keywords['option1']),
$qb->expr()->eq('option2', keywords['option2'])
))
...
}
关键字['option1']和关键字['option2']是带有此类选项的复选框中的值0或1。
但是结果如下:
public function getRandomSearch($keywords)
{
$em = DatabaseORM::entityManager();
$qb = $em->createQueryBuilder();
$qb->select('c')
->from('Products\Product', 'c');
if ($keywords['option1'] && !$keywords['option2']) {
$qb->andWhere($qb->expr()->eq('c.option1', $keywords['option1']));
}
elseif (!$keywords['option1'] && $keywords['option2']) {
$qb->andWhere($qb->expr()->eq('c.option2', $keywords['option2']));
}
elseif ($keywords['option1'] && $keywords['option2']) {
$qb->andWhere($qb->expr()->orX(
$qb->expr()->eq('c.option1', $keywords['option1']),
$qb->expr()->eq('c.option2', $keywords['option2'])
));
}
return $qb->getQuery()
->getResult();
}