Error returnnig 0 rows with complex cDbCriteria

Hi, I have a problem returning rows from a table, using cDbcriteria->condition.

The criteria uses foreign keys,

this is the SQL generated by CDbCommand, from cDbCriteria, I suppose:

Scroll to the WHERE clause, I have a Range (from/to) fro the LastName and FirstName.

I’m using the same value in from and to, because I want only one record !


[15:22:46.851][trace][system.db.CDbCommand] Querying SQL: SELECT `t`.`id` AS `t0_c0`, `t`.`legajo_prefijo` AS `t0_c1`, `t`.`legajo_numero` AS `t0_c2`, `t`.`nombre` AS `t0_c3`, `t`.`apellido_materno` AS `t0_c4`, `t`.`apellido` AS `t0_c5`, `t`.`fecha_nacimiento` AS `t0_c6`, `t`.`direccion` AS `t0_c7`, `t`.`ciudad` AS `t0_c8`, `t`.`codigo_postal` AS `t0_c9`, `t`.`fk_provincia_id` AS `t0_c10`, `t`.`telefono` AS `t0_c11`, `t`.`fk_tipodocumento_id` AS `t0_c12`, `t`.`nro_documento` AS `t0_c13`, `t`.`sexo` AS `t0_c14`, `t`.`hermanos_escuela` AS `t0_c15`, `t`.`fk_familia_id` AS `t0_c16`, `t`.`certificado_medico` AS `t0_c17`, `t`.`activo` AS `t0_c18`, `t`.`fk_conceptobaja_id` AS `t0_c19`, `t`.`procedencia` AS `t0_c20`, `t`.`fk_estadoalumno_id` AS `t0_c21`, `t`.`observacion` AS `t0_c22`, `t`.`beca` AS `t0_c23`, `t`.`fk_grado_id` AS `t0_c24`, `fkGrado`.`id` AS `t1_c0`, `fkGrado`.`descripcion` AS `t1_c1`, `fkGrado`.`orden` AS `t1_c2`, `fkGrado`.`fk_niveltipo_id` AS `t1_c3`, `fkGrado`.`fk_cuota_def_anual_id` AS `t1_c4`, `fkCuotaDefAnual`.`id` AS `t2_c0`, `fkCuotaDefAnual`.`anio` AS `t2_c1`, `fkCuotaDefAnual`.`cantidad_cuotas_mens` AS `t2_c2`, `fkCuotaDefAnual`.`cantidad_cuotas_anual` AS `t2_c3`, `fkCuotaDefAnual`.`descripcion` AS `t2_c4`, `fkCuotaDefAnual`.`estado` AS `t2_c5` FROM `t_alumno` `t` LEFT OUTER JOIN `t_grado` `fkGrado` ON (`t`.`fk_grado_id`=`fkGrado`.`id`) LEFT OUTER JOIN `t_cuota_def_anual` `fkCuotaDefAnual` ON (`fkGrado`.`fk_cuota_def_anual_id`=`fkCuotaDefAnual`.`id`) WHERE ((t.apellido >= ":alumno_ape_desde" AND t.nombre >= ":alumno_nom_desde") AND (t.apellido <= ":alumno_ape_hasta" AND t.nombre <= ":alumno_nom_hasta")) AND (fkCuotaDefAnual.id=1) ORDER BY fk_grado_id ASC, apellido ASC, nombre ASC



This is how I create the cDbCriteria:




$crit_alumno = new CDbCriteria();

	$crit_alumno->order = 'fk_grado_id ASC, apellido ASC, nombre ASC';

	$crit_alumno->condition='(t.apellido >= ":alumno_ape_desde" AND t.nombre >= ":alumno_nom_desde") AND (t.apellido <= ":alumno_ape_hasta" AND t.nombre <= ":alumno_nom_hasta")';

	$crit_alumno->params = array(

			'alumno_ape_desde'=> $alumno_ape_desde,

			'alumno_nom_desde'=> $alumno_nom_desde,

			'alumno_ape_hasta'=> $alumno_ape_hasta,

			'alumno_nom_hasta'=> $alumno_nom_hasta);

			

	$crit_alumno->with = array('fkGrado',

                       'fkGrado.fkCuotaDefAnual'=>array('condition'=>'fkCuotaDefAnual.id='.$datos['anio']),

										);



If I enter the query in mySQl it returns ONE record, witch is spected.

But NONE is returned as Active Record to the program.

$alumnos = Alumno::model()->findAll($crit_alumno);

sizeof($alumnos) is equal to 0 Zero …

Any idea where to look for the debug?

It is possible that the AR could’nt map select columns to Alumno class attributes ??

Best Regards

Maybe this




	$crit_alumno->params = array(

			':alumno_ape_desde'=> $alumno_ape_desde,

			':alumno_nom_desde'=> $alumno_nom_desde,

			':alumno_ape_hasta'=> $alumno_ape_hasta,

			':alumno_nom_hasta'=> $alumno_nom_hasta);



For debugging it’s helpful to see the values bound to sql statements which you can set with enableParamLogging in your db component config.

Also SQL Logging and Profiling could be helpful to log queries to firebug console.