[Resuelto] Problemas con query en yii

Hola a todos los foristas, me esta dando un error al ejecutar una consulta, esta es mi consulta y codigo parcial:





 $query = "select count(est) from tbl_detalles where est= '$cantra';"; 

        	$connection = Yii::app()->db;

        	$command = $connection->createCommand($query);

        	$row=$command->queryRow();

        	$registros =$row['count'];



$cantra esta definida anteriormente

el error que me da es que me dice que count no esta definida, les agradezco por adelantado sus respuestas

Hola Fijate de ponerlo así:

[size=2]


[/size]

$query = "select (count(est)) as 'cantidad' from tbl_detalles where est=:cantra"; $params= [':cantra'=>$cantra];                $connection = Yii::app()->db;                $command = $connection->createCommand($query, $params);                $row=$command->queryRow();                $registros =$row['cantidad'];

[size=2]

[/size]

[size=2]

[/size]

[size=2]El cambio de params es por seguridad.[/size]

[size=2]

[/size]

[size=2]En el array $row no tenés count porque la columna no tiene un alias. el as count hace exactamente eso.[/size]

[size=2]

[/size]

[size=2]Saludos![/size]

Hola sebas gracias por responder, lo puse asi y me dio este error:

CDbCommand falló al ejecutar la sentencia SQL: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound. The SQL statement executed was: select count(est) as ‘cantidad’ from tbl_detalles where est=:cantra.

en esta linea:

$row = $command->queryRow();

no se si tendra algo que ver, pero tengo definida la variable $cantra = $model->Numero; asi, que lo toma del modelo padre.

Buenas, Rafa.

El problema es que lo que te devuelve la consulta no tiene ninguna columna (índice) que se llame ‘count’. Así de simple.

Tú has impreso lo que tiene $row dentro?

Si cambias tu consulta por esta te funcionará (en MySQl funciona):




 $query = "select count(est) count from tbl_detalles where est= '$cantra';"; // Yo en lugar de count le llamaria cuenta, ya que count es una palabra reservada.



Un saludo.

Ok Gracias por responder lagogz, ya habia resuelto, como dijo el amigo migue, lo que pasaba era que le faltaba el alias a la query, lo puse asi




   $query = "select count(est) AS count from tbl_detalles where est= '$cantra';";



y entonces si me coge el valor que referencia abajo




  $registros = $row['count'];



De todas formas gracias

Cierto, no lo había visto.

Un saludo.