我有動(dòng)態(tài)的條件。它們由以下數(shù)組組成:array:2 [ "brand_name" => array:2 [ 0 => "a" 1 => "b" ] "category_type" => array:1 [ 0 => "AA" ]]我需要將 where 條件應(yīng)用于我的查詢。$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 條件,我會(huì)這樣做:$params = array( $ids, ); $query = $em->getConnection()->executeQuery( $sql, $params, array( \Doctrine\DBAL\Connection::PARAM_STR_ARRAY, \PDO::PARAM_INT, ) ); $records = $query->fetchAll();但我不知道如何修復(fù)動(dòng)態(tài)條件的位置。
1 回答

梵蒂岡之花
TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊
使用查詢生成器非常容易。它就是為此而設(shè)計(jì)的。
這樣的事情會(huì)帶你去那里:
$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()
您需要進(jìn)行調(diào)整以適合您的數(shù)據(jù)模型。在您的問(wèn)題中,您正在選擇products as p,但隨后您正試圖從 中進(jìn)行選擇te,所以我猜拼圖中缺少一些部分。
但是你應(yīng)該能夠從這里完成它。
- 1 回答
- 0 關(guān)注
- 169 瀏覽
添加回答
舉報(bào)
0/150
提交
取消