Si, anche questo va bene, ma alla fine ho optato per le istruzioni che avevo indicato nel primo post di apertura.
La select deve essere costruita in questo modo, dove nel caso delle "join" il terzo parametro, un array,
se presente indica l'elenco dei campi da estrarre ed eventualmente rinominarli.
Nel mio caso ho solo un campo da estrarre da ogni tabella, ma aggiungerne altri non e' un problema.
L'unica cosa che non mi piace molto e' che nell'array mi ritrovo anche i valori di tutti i codici che vanno in join.
Chiaramente non e' un problema, ma solo un dettaglio.
Questa la select
Codice PHP:
$select = $dbAdapter->select()
->from(array('p' => 'dp_permisos'),
array('permiso' => 'p.descripcion'))
->join(array('mp' => 'dp_modulos_permisos'),
'p.cod_permiso = mp.cod_permiso')
->join(array('m' => 'dp_modulos'),
'm.cod_modulo = mp.cod_modulo',
array('modulo' => 'm.nombre_modulo'))
->join(array('rp' => 'dp_roles_permisos'),
'rp.cod_permiso = mp.cod_permiso')
->join(array('r' => 'dp_roles'),
'r.cod_rol = rp.cod_rol',
array('roles' => 'r.nombre'))
->join(array('rg' => 'dp_roles_grupos'),
'rg.cod_rol = r.cod_rol')
->join(array('g' => 'dp_grupos'),
'g.cod_grupo = rg.cod_grupo',
array('grupo' => 'g.nombre_grupo'))
->join(array('gu' => 'dp_grupos_usuarios'),
'gu.cod_grupo = g.cod_grupo')
->join(array('u' => 'dp_usuarios'),
'u.cod_usuario = gu.cod_usuario',
array('usuario' => 'u.nombre'))
->where('u.cod_usuario = ?', $id)
->order(array('g.nombre_grupo',
'u.nombre',
'r.nombre',
'm.nombre_modulo',
'p.descripcion'));