0

このコードにページネーションを追加する必要があります。

    $select = new \Zend\Db\Sql\Select ;
    $select->from('school');
    $select->join('school_parent','school.school_parent_id = school_parent.school_parent_id');
    $resultSet = $this->tableGateway->selectWith($select);
    return $resultSet;

この例を試してみましたが、結合テーブルではできません。

誰でも私を助けることができますか?

4

8 に答える 8

3
public function fetchAll($paginated=false)
{
    if($paginated) {
        // create a new Select object for the table album
        $select = $this->getallAlbum();


        // create a new result set based on the Album entity
        $resultSetPrototype = new ResultSet();
        $resultSetPrototype->setArrayObjectPrototype(new Album());
        // create a new pagination adapter object
        $paginatorAdapter = new DbSelect(
        // our configured select object
        $select,
        // the adapter to run it against
        $this->tableGateway->getAdapter(),
        // the result set to hydrate
        $resultSetPrototype
        );
        $paginator = new Paginator($paginatorAdapter);
        return $paginator;
    }
    $resultSet = $this->tableGateway->select();
    return $resultSet;
}
 function getallAlbum(){
    $sql = new Select();
    $sql->from('album')->columns(array('id', 'artist', 'title'))->join('albumcategory', 'album.catId = albumcategory.catId', array('catName' => 'catName'), Select::JOIN_LEFT);
    return $sql; 
}
于 2014-02-11T04:58:20.037 に答える
2

ページネーションは結合でうまく機能するはずです。これは私が持っているもので、あなたが提供した例に似ています:

$select = new \Zend\Db\Sql\Select ;
$select->from('school');
$select->join('school_parent','school.school_parent_id = school_parent.school_parent_id');

return new \Zend\Paginator\Paginator(
    new \Zend\Paginator\Adapter\DbSelect(
        $select,
        $this->tableGateway->getAdapter()
    )
);

上記が機能しない場合に発生している正確なエラーを投稿してください。

于 2013-06-21T15:32:33.003 に答える
0

ページネーションとソート URL の例 https://github.com/bigemployee/zf2-tutorial-paginate-sort

于 2014-02-24T06:56:51.987 に答える
0

回答ありがとうございます。コードを試してみましたが、次の PDOException メッセージがありました。

SQLSTATE [42S21]: 列が既に存在します: 1060 列名が重複しています 'school_parent_id'

また、Rob Allen の例に「結合テーブル」を適応させようとしました。

public function fetchAll($paginated=false)
     {
          if($paginated) {
        // create a new Select object for the table album
            $select = new \Zend\Db\Sql\Select ;
            $select->from('school');
            $select->join('school_parent','school.school_parent_id = school_parent.school_parent_id');
            // create a new result set based on the Album entity
            $resultSetPrototype = new ResultSet();
            $resultSetPrototype->setArrayObjectPrototype(new School());
            // create a new pagination adapter object
            $paginatorAdapter = new DbSelect(
            // our configured select object
            $select,
            // the adapter to run it against
            $this->tableGateway->getAdapter(),
            // the result set to hydrate
            $resultSetPrototype
            );
            $paginator = new Paginator($paginatorAdapter);
            return $paginator;
        }

        $resultSet = $this->tableGateway->select();
        return $resultSet;    
     }

しかし、結果は同じです。

于 2013-07-01T10:11:50.503 に答える
0
// create a new Select object for the table album
        $select = new \Zend\Db\Sql\Select ;
        $select->from('school');
        $select->join('school_parent','school.school_parent_id = school_parent.school_parent_id');

//これを次のように変更します

 // create a new Select object for the table album
    $select = $this->yourFunction();

//そして yourFunction を次のように定義します

 function youFunction(){
$sql = new Select();
$sql->from('school')->columns(array('schoolid', 'schoolname', 'anotherfield'))->join('school_parent', 'school.school_parent_id= school_parent.school_parent_id', array('schoolName' => 'schoolName'), Select::JOIN_LEFT);
return $sql; 

}

于 2014-02-21T03:52:30.287 に答える