我有動態的條件。它們由以下數組組成:array:2 [ "brand_name" => array:2 [ 0 => "a" 1 => "b" ] "category_type" => array:1 [ 0 => "AA" ]]我需要將 where 條件應用于我的查詢。$em = $this->getEntityManager();$sql = " select * from products as p";$i = 0;foreach ($wheres as $key => $value) { if ($i === 0) { $sql .= " WHERE"; } else { $sql .= " AND"; } $sql.= " te.$key IN (:$key)"; $i +=1;}我不確定如何將值分配給查詢。如果我只有 where 條件,我會這樣做:$params = array( $ids, ); $query = $em->getConnection()->executeQuery( $sql, $params, array( \Doctrine\DBAL\Connection::PARAM_STR_ARRAY, \PDO::PARAM_INT, ) ); $records = $query->fetchAll();但我不知道如何修復動態條件的位置。
1 回答

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
使用查詢生成器非常容易。它就是為此而設計的。
這樣的事情會帶你去那里:
$qb = $this->createQueryBuilder('p');
$suffix = 0;
foreach ($conditions as $key => $value) {
$parameter = 'query_' . $suffix++;
$qb->andWhere("p.$key IN :$parameter")
->setParamter($parameter, $value);
}
$records = $qb->getQuery()->getResult()
您需要進行調整以適合您的數據模型。在您的問題中,您正在選擇products as p,但隨后您正試圖從 中進行選擇te,所以我猜拼圖中缺少一些部分。
但是你應該能夠從這里完成它。
- 1 回答
- 0 關注
- 140 瀏覽
添加回答
舉報
0/150
提交
取消