0
必須のクエリには、基本的なアカウント要件と可能なユーザー選択からなるwhereステートメントと、そのデータをペアにしたものが含まれます。次のコードは複数の選択に対して機能しません。つまり、else {}が正しくありません。 AndXの中にorXを条件付きで構築する方法はありますか?OR内にある式の条件付き数AND式ビルダーを使用した
$queryBuilder
...
->where(
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('t.code', $queryBuilder->createPositionalParameter($this->code)),
$queryBuilder->expr()->neq('det.completed', '1')
)
);
if (count($selected) == 0) {
// no results returned
}
else if (count($selected) == 1) {
$queryBuilder->andWhere('det.co_id=' . $queryBuilder->createPositionalParameter($co_array[0]) . ' AND det.ct_id=' . $queryBuilder->createPositionalParameter($ct_array[0]));
}
else {
$nestedWhere = $this->db->createQueryBuilder();
for ($i=0; $i < count($selected); $i++) {
$nestedWhere->expr()->orX(
$nestedWhere->expr()->andX(
$nestedWhere->expr()->eq('det.co_id', $nestedWhere->createPositionalParameter($co_array[$i])),
$nestedWhere->expr()->eq('det.ct_id', $nestedWhere->createPositionalParameter($ct_array[$i]))
)
);
}
$queryBuilder->andWhere($nestedWhere->expr()); // need dynamic list of orX here
}