Paginando un JOIN

edited noviembre 2010 in Principiantes
Hola a todos,
Estoy tratando de paginar los resultados de una consulta que tiene un JOIN. Según la wiki, el método paginate acepta los mismos parámetros que el método find, pero a mi me devuelve un error si utilizo el JOIN.
El modelo es el siguiente:
class Clientes extends ActiveRecord{
  public $debug = true;
  public $logger = true;
  
  public function initialize() {
    $this->has_one('representantes_has_clientes');
  }
  
  public function getClientesRepresentante($representantes_id=null, $page=1){
    if ($representantes_id != null){
         return $this->paginate('join: inner join representantes_has_clientes on  representantes_has_clientes.clientes_id=clientes.id',
                            'conditions: representantes_has_clientes.representantes_id='.$representantes_id,
                            'columns: clientes.*','per_page: 5', 'page:'.$page);
    }else{
       return null;
    }
  }
}

La llamada desde el controlador es la siguiente:
$this->clientes = $this->Clientes->getClientesRepresentante($this->user['representantes_id'],$page);

Y Kumbia me devuelve este error:
KumbiaException: Unknown column 'representantes_has_clientes.representantes_id' in 'where clause' al ejecutar <em>"SELECT COUNT(*) FROM clientes WHERE representantes_has_clientes.representantes_id=1"</em> (0) 
Si en el controlador cambio el "paginate" por "find" me devuelve todos los resultados sin problemas. ¿El paginador no soporta el JOIN? ¿Existe alguna forma de hacer que funcione y que no pase por reimplementar el paginado desde la definición del modelo (añadiendo un método paginate y modificando la consulta)

¡Muchas gracias!

Comentarios

  • edited 8:41
    has probado... si no recuedo mal hay un paginate_by_sql o similar
  • edited 8:41
    con paginate_by_sql("consulta con join...","page: $page","ppage: $ppage"); funciona seguro. Yo tengo muchos ejemplos así.
Sign In or Register to comment.