web-dev-qa-db-fra.com

Quel type utiliser pour les champs de case à cocher dans hook_field_schema?

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,
)
7
user19626

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.

10
Clive

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,
  ),
5
Free Radical

pgsql a travaillé l'échantillon:

'has_original' => array(
  'pgsql_type' => 'boolean',
  'type' => 'int',
  'size' => 'tiny',
  'not null' => TRUE,
),
0
rodnamoc