数组无缘无故地命名

时间:2016-05-02 09:19:48

标签: arrays symfony doctrine

我调用了一个存储库方法并在其中传递了一个数组用于参数。但是数组以第一个参数命名,我不明白为什么。

这是电话:

/**
 * @param $month
 * @param $year
 * @return Conges[]
 */
public function getAllCongesPayes($year, $month)
{
    return $this->congesRepository->getNbCongesByMonth(array('year' => $year, 'month' => $month, 'cngPaye' => true));
}

在错误中我可以看到:

array('year' => array('year' => '2016', 'month' => '05', 'cngPaye' => true))) 

当然它是在说“缺少参数2”,因为其中只有一个数组。

以下是存储库方法:

public function getNbCongesByMonth($year, $month, $conge){
$qb = $this->createQueryBuilder('e');

$listOfEntities = $qb
    ->select('count(e) as nb')
    // ->leftjoin('e.cngUsrLogin', 'u')
    ->where(
        $qb->expr()->like('e.cngDateDebut',
            $qb->expr()->literal($year.'-'.$month.'-%')
        )
    )
    ->andWhere('e.congesPayes = :conge')
    // ->andWhere('u.usrGestionCra = 1')
    // ->groupBy('e')
    ->setParameter('conge', $conge)
    ->getQuery()
    ->getResult();
return $listOfEntities;
}

和控制器中的呼叫:

$this->congesService = $this->get("intranet.conges_service");
    $nbCongesPayes = $this->congesService->getAllCongesPayes('2016', '05');

如果有人能解释为什么会发生这种情况会很棒。

提前致谢。

1 个答案:

答案 0 :(得分:1)

好吧,我真的很蠢,2分钟后想出来......对不起该帖子......

以下是答案:

public function getNbCongesByMonth($array){
$qb = $this->createQueryBuilder('e');

$listOfEntities = $qb
    ->select('count(e) as nb')
    // ->leftjoin('e.cngUsrLogin', 'u')
    ->where(
        $qb->expr()->like('e.cngDateDebut',
            $qb->expr()->literal($array['year'].'-'.$array['month'].'-%')
        )
    )
    ->andWhere('e.cngPaye = :conge')
    // ->andWhere('u.usrGestionCra = 1')
    // ->groupBy('e')
    ->setParameter('conge', $array['cngPaye'])
    ->getQuery()
    ->getResult();
return $listOfEntities;
}

需要在参数中传递数组。我不知道为什么这样做。 无论如何它已经解决了