2017-09-22 9 views
0

Je pensais que cela fonctionnerait, mais ce n'est pas le cas.Comprendre le problème obtenir une ligne de la base de données avec 2 paramètres

J'ai une méthode dans mes modelclass comme ceci:

public function getUnitbyName2($unitname, $ProjectID) 
    { 
     //$id = (int) $id; 
     $rowset = $this->tableGateway->select(['Unitname' => $unitname], ['ProjectID' => $ProjectID]); 
     $row = $rowset->current(); 
     if (! $row) { 
//   throw new RuntimeException(sprintf(
//     'Could not find row with identifier %d', 
//     $unitname 
//     )); 
      $row=0; 
     } 
     return $row; 
    } 

Si je donne un unitname et non existant PROJECT_ID j'attendre à obtenir une valeur 0 existante. Mais je reçois toujours le numéro de l'unité dans le premier projet avec le nom d'unité donné. Il est courant que le nom de l'unité existe dans plusieurs projets différents. La fonction est supposée obtenir le bon enregistrement s'il existe en utilisant les deux paramètres.

Ma question est, quel est le problème avec l'utilisation de 2 paramètres connectés par AND?

Répondre

0

AbstractTableGateway :: select() accepte un argument, vous passez 2: Vous devez passer 1, combiner les 2 tableaux. Modifiez votre code pour:

$rowset = $this->tableGateway->select(['Unitname' => $unitname, 'ProjectID' => $ProjectID]);