我有动态的条件。它们由以下数组组成: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 关注
- 101 浏览
添加回答
举报
0/150
提交
取消