Zend-Framework 2 пагинациясы біріктіреді

Бұл кодта параграфты қосу керек:

    $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;

Бұл мысалды қолданамын, бірақ мен істей алмаймын ол біріктірілген үстелмен бірге.

Кез келген адам маған көмектесе алады ма?

0
Мәселе дәл қандай?
қосылды автор Ruben, көзі
Сәлеметсіздер, мен қосылым кестесі бар прадинацияны қосу керек, бірақ осы PDOException хабарламасы болған: SQLSTATE [42S21]: Баған бұрыннан бар: 1060 Көшірме баған атауы 'school_parent_id'
қосылды автор Antonio Capela, көзі

8 жауаптар

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; 
}
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()
    )
);

Жоғарыда келтірілген жұмыс істемесе, қате жіберіңіз.

1
қосылды
// 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();

// сіздің функцияңызды анықтаңыз

 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; 

}

0
қосылды

Осы жолды кодқа қосыңыз:

$select->columns(array(new Expression('DISTINCT school.school_parent_id')));

НЕМЕСЕ:

$select->join('school_parent','school.school_parent_id = school_parent.school_parent_id', array('sp_id' => 'school_parent_id'));
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;    
     }

Бірақ нәтиже бірдей.

0
қосылды
Бұл қате болуы мүмкін, мына жерден қараңыз: github.com/zendframework/zf2/issues/4719
қосылды автор Ruben, көзі

Біріктіру синтаксисін қолданып көріңіз

$select->from('table1')->join('table2', 'table1 = table2', array('table2.colum_to_return1', 'table2.colum_to_return2'));
0
қосылды

Басқа мысалды пагинациямен және сұрыптаумен көріңіз

### module_config.php ###
'router' => array(
    'routes' => array(
        'album' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/album[/:action][/:id][/page/:page][/order_by/:order_by][/:order]',
                'constraints' => array(
                    'action' => '(?!\bpage\b)(?!\border_by\b)[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'     => '[0-9]+',
                    'page' => '[0-9]+',
                    'order_by' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'order' => 'ASC|DESC',
                ),
                'defaults' => array(
                    'controller' => 'Album\Controller\Album',
                    'action'     => 'index',
                ),
            ),
        ),
    ),
),

###### AlbumController ###
namespace Album\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Album\Model\Album;
use Album\Form\AlbumForm;
use Zend\Db\Sql\Select;
use Zend\Paginator\Paginator;
use Zend\Paginator\Adapter\Iterator as paginatorIterator;

class AlbumController extends AbstractActionController {

protected $albumTable;

public function indexAction() {
    $select = new Select();

    $order_by = $this->params()->fromRoute('order_by') ?
            $this->params()->fromRoute('order_by') : 'id';
    $order = $this->params()->fromRoute('order') ?
            $this->params()->fromRoute('order') : Select::ORDER_ASCENDING;
    $page = $this->params()->fromRoute('page') ? (int) $this->params()->fromRoute('page') : 1;

    $albums = $this->getAlbumTable()->fetchAll($select->order($order_by . ' ' . $order));
    $itemsPerPage = 10;

    $albums->current();
    $paginator = new Paginator(new paginatorIterator($albums));
    $paginator->setCurrentPageNumber($page)
            ->setItemCountPerPage($itemsPerPage)
            ->setPageRange(7);

    return new ViewModel(array(
                'order_by' => $order_by,
                'order' => $order,
                'page' => $page,
                'paginator' => $paginator,
            ));
}
}
0
қосылды

URL санын сұрыптау және сұрыптау https://github.com/bigemployee/zf2-tutorial-paginate-sort

0
қосылды