relaciones joinwith framework createcommand consultas app mysql activerecord yii relational-database alias

mysql - joinwith - ¿Puedo forzar a Yii a usar un alias particular en SQL generado?



relaciones en yii2 (3)

Pruebe esto (estoy asergándome ''survey.questions'' es un campo de la sonda de tabla)

Prove::model()->findByPk($id)->survey.questions, CHtml::listData(Prove::model()->findAll(array("order"=>"survey.questions")),

Estoy recuperando mis registros usando CActiveRecord con una instrucción with() :

Probes::model()->with(array ( ''user'', ''results'', ''results.answer'', ''survey'', ''survey.questions'' ))->findByPk($id)

Quería usar GROUP BY en el campo question_id de survey.questions , así que cambié arriba a:

''survey.questions''=>array(''group''=>''survey.questions.question_id''),

Esto provocó una excepción de SQL 1054 Unknown column . Sin embargo, al analizar el código SQL adjunto:

`questions`.`question_id` AS `t6_c2`

t6_c2 averiguar, que tengo que usar alias t6_c2 (autogenerado por Yii?). Entonces, otro cambio a:

''survey.questions''=>array(''group''=>''t6_c2''),

y el problema está resuelto

Pero, de nuevo, alias t6_c2 parece bastante ... "inestable" (autogenerado?) Para mí. ¿Puedo forzar a Yii en esta parte del SQL generado algún otro alias proporcionado por mí? ¿O cuán seguro puedo ser, que esta parte del código SQL no cambiará en la generación siguiente (algunos más adelante)? O, ¿hay alguna otra forma de lograr, lo que quiero lograr?


Puede establecer alias específicos y únicos para cada tabla de relaciones en un método de relaciones en su modelo. Por ejemplo, "user"=>array(self::HAS_MANY, "User", "user_id", "alias"=>"your_alias_for_this_relation")


puedes asignar un alias a tu relación

, ''survey.questions''=>array( ''alias'' => ''surq'' ''group''=>''surq.question_id'', ),

lee esto y esto para más información