2011-10-18 36 views

Respuesta

5

No hay una manera fácil, no. Por lo que yo puedo decir que son la base de datos manual de los cambios que necesita hacer:

  1. En cambio field_config la columna de la type a 'LIST_TEXT' y module la columna de 'lista' para su campo.

  2. Luego tendrá que cambiar la matriz serializada en la columna data para que coincida con la de un tipo de lista (obviamente tendrá la configuración para los tipos de texto en este momento). No hay una manera fácil de mostrarle cómo hacerlo aquí, la mejor manera sería comparar la matriz serializada con una para un campo diferente de un tipo de lista, luego podrá ver qué valores necesita eliminar/cambiar . La matriz allowed_values bajo settings será donde coloque los valores de su lista. Una vez que esto haya cambiado, vuelva a serializarlo y vuelva a colocarlo en la columna data para su campo.

  3. Después de que retire las columnas de field_datafield_revision y tablas de su campo que comienzan con field_myfield_ pero no son field_myfield_value (el tipo de lista sigue siendo necesario que la columna).

  4. Agregue un índice a esas tablas para la columna value.

  5. claras sus caches

debo advertir que eso es, no está comprobado que sólo parece tener sentido mirar las estructuras de la tabla, que sería una buena idea tener una copia de seguridad de las tres tablas que Estaré jugando solo por las dudas.

+0

¡Funcionó como un encanto! Gracias –

+1

También tuve que cambiar el tipo de widget, lo cual puede hacer editando los datos directamente en 'field_config_instance', o editando el campo y seleccionando" Seleccionar "o" Casillas de verificación "como el tipo de widget. También como consejo, me pareció más fácil seleccionar primero el campo y usar esa información serializada para editar la columna existente. Básicamente, solo necesita cambiar el nombre (y las longitudes de los caracteres para esas entradas) y la ID. – Wayne

4

acabo de escribieron un código que debe manejar esto para usted en mi Helper module: http://cgit.drupalcode.org/helper/tree/lib/FieldChangeHelper.php?h=7.x-1.x

FieldChangeHelper::changeType('my_text_field_name', 'list_text'); 

que debería funcionar bien para los casos más simples y campos, pero debe ser probado a fondo. Además, actualmente no actualiza ningún formateador de campo, por lo que querrá revisar la configuración de visualización para el campo después de ejecutar esto.

+0

Gracias, hombre - que funcionó muy bien y ahorró un montón de tiempo :) –

Cuestiones relacionadas