Doctrine Repository accept array for getAll


在存储库中,我需要一个自定义的 getALL 查询,该查询根据数据数组检查项目。 例如,我需要能够发送 $params = [ 'type' => [ 'type1', 'type2' ], 'username' => $username

] 但我目前只能发送一个参数,例如: $params = ['type' => 'type1', 'username' => $username]。

数组的接受(如上面的数组)添加到此 getAll 查询的最佳方法是什么?

public function getAllQuery($params = [])
{
    $query = $this->createQueryBuilder('c');
    if(count($params))
    {
        foreach($params as $param => $value)
        {
            //todo need to make it accept an array of parameters
            if(in_array($param, $this->getClassMetadata()->getFieldNames()) && $param != 'deleted')
            {
                $query
                    ->andWhere(sprintf('c.%1$s LIKE :%1$s', $param))
                    ->setParameter($param, sprintf('%%%s%%', $value));
            }
            /*code already exists here for checking other parameters 
              outside of 'type' (e.g. 'username') */

        }

    }
    return $query->getQuery();
}

我无法发表评论,所以我会回答,而不会确定我已经理解了这个问题。你在等这样的事情吗?在这种情况下,它更像是一个PHP问题,而不是Doctrine。

过去代码的结果:这里。

$params = array( 'type' => array( 'type1', 'type2' ), 'username' => 'flavien');
$requiredFields = array('type');
if(count($params))
{
    foreach($params as $param => $value)
    {
        if(in_array($param, $requiredFields) && $param != 'deleted')
        {
              if(is_array($value))
              {
                    echo "My param: {$param}" . PHP_EOL;
                    for($i=0; $i < count($value); $i++) {
                          echo  $value[$i] . PHP_EOL;
                    }
              }
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新