bueno logre resolver esta duda de la siguiente manera
Código PHP:
public function findBySubmenu($id_submenu, $rol) {
$db = $this->getAdapter ();
$select = $db->select ();
$select->distinct ( true );
$select->from ( array ('a' => 'accion' ),
array ('id_accion', 'nombre', 'titulo', 'url_accion', 'img' ) );
$select->joinLeft ( array ('ar' => 'accion_rol' ), "a.id_accion=ar.accion and ar.rol='$rol'", array ('rol' ) );
$select->where ( 'a.submenu=?', $id_submenu );
$select->order ( 'ar.rol' );
$select->order ( 'a.nombre' );
$results = $db->fetchAll ( $select );
$acciones = array ();
foreach ( $results as $resu ) {
$accion = new Accion ( );
$accion->setId ( $resu ['id_accion'] );
$accion->setNombre ( $resu ['nombre'] );
$accion->setTitulo ( $resu ['titulo'] );
$accion->setAccion ( $resu ['url_accion'] );
$accion->setImagen ( $resu ['img'] );
$asignado = false;
if ($resu ['rol'] != ""){
$asignado = true;
}
$accion->setAsigned ( $asignado );
$acciones [] = $accion;
}
return $acciones;
}
veran esta un poco mas elaborado que al princiio pero la consulta es esencialmente la misma puedo poner multiples condiciones en un join en este caso el problema que reportaba era que me reconocia la condicion como si fuera una columna de la tabla, pero eso era por la forma en la que yo enviaba los datos
Cita: $select->joinLeft ( array ('ar' => 'accion_rol' ), 'a.id_accion=ar.accion and ar.rol="$rol"', array ('rol' ) );
malllllllll
se deberia pasar de esta manera
Cita: $select->joinLeft ( array ('ar' => 'accion_rol' ), "a.id_accion=ar.accion and ar.rol='$rol'", array ('rol' ) );
si se dan cuenta el error iva al pasar el parametro del join mandaba con comillas simples el segundo parametro y deberia ir en comillas dobles
", y la variable
$rol pasada con
' comillas simples