4

Zend Framework 2 を使用した開発を始めたばかりで、障害に遭遇しました。

最も単純な式では、fetchAll 関数が機能します。

public function fetchAll()
{
    $resultSet = $this->tableGateway->select();
    return $resultSet;
}

ただし、次の方法で結合を混ぜようとすると:

public function fetchAll()
{
    $sql = new Sql($this->tableGateway->getAdapter());

    $select = $sql->select();
    $select->from('Entreprise')
        ->columns(array('id', 'nom', 'categorie_id'))
        ->join(array('C' => 'Categorie'), 'categorie_id = C.id', array('categorie' => 'nom'), \Zend\Db\Sql\Select::JOIN_INNER);
    $resultSet = $this->tableGateway->selectWith($select);
    return $resultSet;
}

結果のクエリは次のとおりです。

SELECT "Entreprise"."id" AS "id", "Entreprise"."nom" AS "nom", "Entreprise"."categorie_id" AS "categorie_id", "C"."nom" AS "categorie" FROM "Entreprise" INNER JOIN "Categorie" AS "C" ON "categorie_id" = "C"."id"

クエリはエラーをスローせず、代わりに空の結果セットを返すだけなので、テーブル名、列は問題ありません。結合を削除して、次のコードを残すだけでも役に立ちません。

public function fetchAll()
{
    $sql = new Sql($this->tableGateway->getAdapter());

    $select = $sql->select();
    $select->from('Entreprise');
    $resultSet = $this->tableGateway->selectWith($select);
    return $resultSet;
}

これは、アダプターを取得する方法または選択をインスタンス化する方法に単に問題があると信じさせますが、それを理解したり、解決策を見つけたりすることはできません。

誰かが私が間違っていることを理解するのを手伝ってくれますか?

4

1 に答える 1

2

次のコードは完全に機能します。

public function fetchAll()
{
    $sql = new Sql($this->tableGateway->getAdapter());

    $select = $sql->select();
    $select->from('Entreprise')
        ->columns(array('id', 'nom', 'categorie_id'))
        ->join(array('C' => 'Categorie'), 'categorie_id = C.id', array('categorie' => 'nom'), \Zend\Db\Sql\Select::JOIN_INNER);
    $resultSet = $this->tableGateway->selectWith($select);
    return $resultSet;
}

...別のファイルに誤って入力されたタイプミスでした...

リードしてくれたサムに感謝します。ばかばかしいほどシンプルですが、試してみようとは思いませんでした。

于 2012-10-28T15:49:38.437 に答える