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")