我调用了一个存储库方法并在其中传递了一个数组用于参数。但是数组以第一个参数命名,我不明白为什么。
这是电话:
/**
* @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');
如果有人能解释为什么会发生这种情况会很棒。
提前致谢。
答案 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;
}
需要在参数中传递数组。我不知道为什么这样做。 无论如何它已经解决了