usar seleccionar mostrar llenar insertar datos con como combo php yii yii-relations

php - seleccionar - Ordena dropDownList usando relaciones?



select ajax php mysql (2)

Creo que la forma correcta de hacerlo es mediante el uso de ámbitos .

Puede definir cualquier cantidad de ámbitos que ordenen el conjunto de resultados y usarlos de la siguiente manera:

Company::model()->scopeName()->findAll();

Si su aplicación siempre requiere que las empresas se busquen en un orden ordenado, incluso puede definir un alcance predeterminado en su clase de modelo:

public function defaultScope() { return array(''order'' => ''company ASC''); }

Esto dará lugar a cada llamada a Company::model()->findAll(); devolver resultados ordenados

Tengo algunos formularios en Yii usando lo siguiente para obtener listas de datos de tablas relacionadas en forma de menú desplegable:

dropDownList(CHtml::listData(Company::model()->findAll(array(''order'' => ''company ASC''))));

Esto funciona, pero eso significa que para cada lista desplegable (que es mucho) voy a poner esta array(''order'' => ''company ASC'' en cada uno.

¿Es esta la mejor manera de hacerlo? ¿No hay una forma de obtener estos datos usando las relaciones modelo () y especificando el orden dentro de la relación?


Normalmente agrego un método opts() a cada modelo que podría usarse como fuente para un menú desplegable:

class Company extends CActiveRecord { // ... public static opts() { $opts = array(); foreach(self::model()->findAll(array(''order''=>''name ASC'')) as $model) $opts[$model->id] = $model->name; return $opts; }

Se usa así

echo $form->dropDownList($user, ''company_id'', Company::opts());

Si necesita las mismas opciones varias veces en una página, incluso podría "almacenar en caché" el resultado en una variable de clase privada estática o usar DAO para obtener los datos de la lista de una manera más eficiente.