Tâche:
Créez un champ personnalisé qui contient une seule case à cocher en implémentant hook_field_schema
etc.
Question:
Quel type de données est (ou devrait) être utilisé pour définir la colonne de base de données correspondante pour enregistrer les valeurs des cases à cocher?
Exemple de code:
function field_test_field_schema ($field)
{
$columns = array();
switch ($field['type']) {
case 'test':
$columns = array(
'value' => array(
'type' => '???',
'not null' => TRUE
),
);
break;
}
return array('columns'=> $columns);
}
Mise à jour: node_schema
utilise int
pour les colonnes booléennes. par exemple. :
'status' => array(
'description' => 'Boolean indicating whether the node is published (visible to non-administrators).',
'type' => 'int',
'not null' => TRUE,
'default' => 1,
)
Un minuscule int
serait le plus approprié à mon avis:
$columns = array(
'value' => array(
'type' => 'int',
'not null' => TRUE,
'size' => 'tiny',
'default' => 0,
),
);
Un int
'standard' serait exagéré pour un champ qui ne contiendra qu'un 0
ou 1
valeur.
Consultez la documentation Types de données pour un aperçu des différents types disponibles.
Il n'y a pas de booléen dans l'API de schéma Drupal donc vous utilisez juste un petit entier. Ci-dessous est un exemple de case à cocher pour un membre où coché est "bloqué" et décoché est "en règle" :
'status' => array(
'description' => '0 = in good standing; 1 = blocked',
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'default' => 0,
),
pgsql a travaillé l'échantillon:
'has_original' => array(
'pgsql_type' => 'boolean',
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
),