为了账号安全,请及时绑定邮箱和手机立即绑定

如何将数组传递给 where 条件?

如何将数组传递给 where 条件?

PHP
HUX布斯 2023-06-18 17:49:39
我有动态的条件。它们由以下数组组成: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,所以我猜拼图中缺少一些部分。


但是你应该能够从这里完成它。


查看完整回答
反对 回复 2023-06-18
  • 1 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信