sql >> データベース >  >> RDS >> Mysql

TableGatewayを使用したZF2のLEFTJOIN

    @samsonasikの回答に追加し、コメントで問題に対処します。そのステートメントから返されるものから結合された値を取得することはできません。そのステートメントは、結合された行を持たないモデルオブジェクトを返します。生のSQLとして準備し、結果の各行をオブジェクトではなく配列として返すレベルでSQLとして実行する必要があります。

    $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']);
    }
    


    1. MySQLで同じ主キーを参照する2つの外部キー

    2. PlanetScale&Vitess:レガシーシャードデータベースによる参照整合性

    3. PL / SQLを使用して電子メールアドレスを検証する方法は?

    4. (My)SQLのみを使用して制限オフセットを動的にする方法