2017-07-03 14 views
0

J'essaie d'obtenir un titre sur une deuxième table (par jointure à gauche) mais mon résultat ne fournit pas la colonne de la table jointe.SQL Rejoindre dans ZF3 Expressive - ResultSet ne donne pas de colonnes jointes

Voici comment mon TableGateway ressemble à:

public function fetchCourseListWithStudyprogram() 
{ 
     $select = $this->getSql()->select(); 
     $select->where->equalTo('course_active', 'Y'); 
     $select->join('studyprogram', 'studyprogram.studyprogram_id = course.studyprogram_id', ['studyprogram_title'], $select::JOIN_LEFT); 

    $resultSet = $this->selectWith($select); 
    var_dump($resultSet); 
    return $resultSet->toArray(); 
} 

La déclaration est se construit comme il devrait être:

public 'queryString' => string 'SELECT `course`.*, `studyprogram`.`studyprogram_title` AS `studyprogram_title` FROM `course` LEFT JOIN `studyprogram` ON `studyprogram`.`studyprogram_id` = `course`.`studyprogram_id` WHERE `course_active` = :where1' (length=214) 

Quand il s'agit d'obtenir des résultats, il ne tient pas compte de la colonne « studyprogram_title » , Je suppose que c'est à cause du resultSet donné (avec CourseEntity lié)

Y at-il un moyen d'afficher le studyprogram_title sans l'ajouter à CourseEntity? Ce n'est pas vraiment une partie, donc je suppose que c'est sale si je l'ajoute là-bas.

Répondre

0

Il existe un moyen de gérer deux tables dans un modèle.

Si vous souhaitez joindre deux tables directement sans spécifier tablegateway pour chaque table, cela posera un problème. Cela signifie que vous ne pouvez pas transformer le resultset en tableau car, dans ce cas, vous n'utilisez pas le resultsetprototype pour l'autre table comme vous le faites pour celui (le modèle actuel) où vous essayez de joindre deux tables. Vous pouvez consulter cette answer!