Paginator and Select with join

184 Views Asked by At

In my current ZF2 projet, I use Paginator but I have a encorred a problem.

When I use Paginator with a select join, I can't display the object element who don't belong at my Servicegroup object.

# Create a new Select object
      $Select = new Select();
      $Select->from('t_service_group')
             ->join('t_user_group', 't_user_group.user_group_id = t_service_group.fk_user_group_id')
             ->order('service_group_name ASC');

      # Create a new result set
      $resultSetPrototype = new ResultSet();
      $resultSetPrototype->setArrayObjectPrototype(new ServiceGroup());

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

Do you know how I can do to use paginator without using:

 setArrayObjectPrototype(new ServiceGroup());

Thanks you all for your help Best regards

EDIT

If you use a select query with join in your query paginator. You have to make that:

     # Create a new Select object
      $Select = new Select();
      $Select->from('t_service_group')
             ->join('t_user_group', 't_user_group.user_group_id = t_service_group.fk_user_group_id')
             ->order('service_group_name ASC');

      # Create a new result set
      $resultSetPrototype = new ResultSet();
#      $resultSetPrototype->setArrayObjectPrototype(new ServiceGroup());

      # 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;
1

There are 1 best solutions below

0
Umair Abid On

You simple don't set a resultsetprototype and let use the default result set prototype which will populate all the values returning from the row