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

我有动态的条件。它们由以下数组组成:


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();

但我不知道如何修复动态条件的位置。


HUX布斯
浏览 110回答 1
1回答

梵蒂冈之花

使用查询生成器非常容易。它就是为此而设计的。这样的事情会带你去那里:$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,所以我猜拼图中缺少一些部分。但是你应该能够从这里完成它。
打开App,查看更多内容
随时随地看视频慕课网APP