2016-05-02 16 views
1

ich eine Repository-Methode aufrufen und ein Array darin für die Parameter übergeben. Aber das Array ist nach dem ersten Parameter benannt und ich verstehe nicht warum.Array ohne Grund benannt

Hier ist der Aufruf:

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

Und in dem Fehler kann ich sehen:

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

Und natürlich ist es zu sagen "Missing Argument 2", da nur ein Array in es ist.

Hier ist die Repository-Methode:

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; 
} 

und der Anruf in der Steuerung:

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

Wenn jemand erklären könnte, warum dies das passiert wäre genial.

Vielen Dank im Voraus.

Antwort

1

OK, ich bin wirklich stumm und dachte, es 2 Minuten nach ... Sorry für die Post ...

Hier ist die Antwort:

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; 
} 

benötigt, um ein Array übergeben in der Parameter. Ich weiß nicht, warum ich das gemacht habe. Wie auch immer es ist gelöst

+0

Ich war im Begriff zu antworten, bevor ich das sah. Eigentlich, ich denke, anstatt "getNbCongesByMonth ($ Jahr, $ Monat, $ Conge)" in 'getNbCongesByMonth ($ Array)' zu ändern, wäre es besser zu ändern 'return $ this-> CongesRepository-> getNbCongesByMonth (Array (' Jahr '=> $ Jahr,' Monat '=> $ Monat,' cngPaye '=> true); 'um' this-> congesRepository-> getNbCongesByMonth ($ year, $ month, true); 'zurückzuliefern macht die Parameter des Arrays besser sichtbar. – Terenoth

+0

Oh yeah, nice :) Eigentlich war es eine Frage wert ^^ Danke! –