Mysql
 sql >> Datenbank >  >> RDS >> Mysql

LEFT JOIN in ZF2 mit TableGateway

Ergänze die Antwort von @samsonasik und behandle die Probleme in seinen Kommentaren. Sie können die verbundenen Werte nicht aus dem abrufen, was von dieser Anweisung zurückgegeben wird. Diese Anweisung gibt das Modellobjekt zurück, das keine verbundenen Zeilen enthält. Sie müssen es als SQL auf einer Ebene ausführen, die es als rohes SQL vorbereitet und Ihnen jede resultierende Zeile als Array und nicht als Objekt zurückgibt:

$sqlSelect = $this->tableGateway->getSql()->select();
$sqlSelect->columns(array('column_name_yourtable'));
$sqlSelect->join('othertable', 'othertable.id = yourtable.id', array('column_name_othertable'), 'left');

$statement = $this->tableGateway->getSql()->prepareStatementForSqlObject($sqlSelect);
$resultSet = $statement->execute();
return $resultSet;

//then in your controller or view:

foreach($resultSet as $row){
    print_r($row['column_name_yourtable']);
    print_r($row['column_name_othertable']);
}