Problemas Con Order By En Criteria

Buenas, soy bastante nuevo con yii, y me está dando algún que otro problema.

Os expongo la duda / problema.

Yo tengo este criteria creado, para hacer la consulta que necesito y mostrar luego el resultado, pues… si en el order pongo ‘video.date_add’ ya que hay varias tablas con el campo date_add y si no sería un nombre ambiguo, el resultado que me muestra, no sale ordenado.

$Criteria = new CDbCriteria();

$Criteria->addCondition (“status = ‘ACTIVE’”, “AND”);

$Criteria->addCondition ("active = 1");

$Criteria->order = “‘video.date_add’ DESC”;

$videos = Video::model()->with(‘favs’)->with(‘comments’)->with(‘visits’)->findAll($Criteria);

En cambio, si sustituyo el criteria, por el siguiente, sí que funciona (t0_c10 es el alias que le asigna yii automáticamente):

[b]

$Criteria->order = "t0_c10 DESC";[/b]

¿Alguien puede orientarme por qué puede ser?

Saludos y gracias de antemano.

yo creo que es un error de sintaxis, prueba exactamente con esto:




$Criteria->order = "video.date_add DESC";



Fijate que he eliminado las comillas simples que creo que dan el problema.

Por cierto bienvenido por aquí.

Buenas, lo primero, gracias por responder y gracias por la bienvenida.

Y con respecto a esa opción, ya la probé antes de publicar la duda, y las comillas las quité, y me daba columna desconocida… porque internamente le asigna el nombre t a la tabla… funciona con:




$Criteria->order = "t.date_add DESC";



Pero me resulta bastante extraño que obligue a usar alias que asigna él, en vez de los nombres reales de las tablas… pero si tiene que ser así… no quedará más remedio que hacerlo así :huh:

Lo estas haciendo bien, yii asigna el alias t a la tabla inicial, con las demás no tiene problemas.

Puedes asignar el alias al criteria (alias) pero como es algo que hace siempre Yii yo utilizo el alias t.

Se que es para evitar posibles problemas de ambiguedad de nombres y el grupo de desarrollo eligió esta solución.

Vale, muchas gracias por tu tiempo. :wink:

Saludos!