Obtener Los Metadata Del Model

Hola a todos.

Me he planteado hacer un widget gráfico de construcción de SQLWhere, compatible con este para ASP.NET

La idea es cargar los atributos del modelo, en función del tipo de dato que albergue ese atributo cargar unos determinados operadores (por ejemplo el atributo username es string, entonces las opciones de operador serían LIKE, =, etc…) y en función del tipo de operador y tipo de dato cargar los input para la entrada de datos por los que filtrar la información.

De tal manera que quedara algo así recién cargado:

El control del que partimos, realizado para ASP.NET y que yo tengo customizado en diversas aplicaciones web realizadas en .NET, contiene una parte de js que es la que gestiona todo la operativa en cliente. Desde el servidor hay que cargar los metadatos (nombre de atributos, tipo de datos, etc…) y gestionar posteriormente el where generado, lo suyo sería que fuera vía CDbCriteria, y no directamente SQL.

Bien, estoy intentando obtener para esto:

  • Lista de nombres de atributes:

 foreach($model->getMetaData()->columns as $columns){

 //code

	echo $columns->name; // Nombre campo

        echo $model->getAttributeLabel($columns->name); // Label

}

  • El datatype de cada atributo: ??????

  • Las Relations del model, y cómo están asociadas (por ejemplo una relación en el modelo Post podría ser ‘Author’, Belongs_TO, authorid. En mi widget identificaría internamente que la columna authorid sería int, y que tiene asociada una Relation con la tabla autores, por lo que en mi widget gráficamente debería mostrarse:

Autor - INCLUYE (IN) / NO INCLUYE (NOT IN) - Lista de Autores (multiselección)

¿Cómo podría obtener los datos de las relaciones?

Por ultimo, el widget quedaría así una vez utilizado:

Saludos y gracias de antemano.