Welcher Typ soll für Kontrollkästchenfelder in hook_field_schema verwendet werden?


7

Aufgabe:

Erstellen Sie ein benutzerdefiniertes Feld, das ein einzelnes Kontrollkästchen enthält, indem Sie hook_field_schemausw. implementieren .

Frage:

Welcher Datentyp wird (oder sollte) verwendet, um die entsprechende Datenbankspalte zum Speichern von Kontrollkästchenwerten zu definieren?

Beispielcode:

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);
}

Update: node_schema Wird intfür boolesche Spalten verwendet. z.B :

'status' => array(
  'description' => 'Boolean indicating whether the node is published (visible to non-administrators).',
  'type' => 'int',
  'not null' => TRUE,
  'default' => 1,
)

Antworten:


10

Ein winziger intwäre meiner Meinung nach am besten geeignet:

$columns = array(
  'value' => array(
    'type' => 'int',
    'not null' => TRUE,
    'size' => 'tiny',
    'default' => 0,
  ),
);

Ein 'Standard' intwäre ein Overkill für ein Feld, das immer nur einen 0oder 1Wert enthält.

Sehen Sie sich die Datentypen docs für einen Überblick über die verschiedenen Arten zur Verfügung zu Ihnen.


5

In der Drupal-Schema-API gibt es keinen Booleschen Wert. Sie verwenden also nur einen winzigen Int. Unten finden Sie ein Beispiel für ein Kontrollkästchen für ein Mitglied, bei dem das Kontrollkästchen "blockiert" und das Kontrollkästchen "in gutem Zustand" deaktiviert ist:

  'status' => array(
    'description' => '0 = in good standing; 1 = blocked',
    'type' => 'int',
    'size' => 'tiny',
    'not null' => TRUE,
    'default' => 0,
  ),

0

pgsql arbeitete Beispiel:

'has_original' => array(
  'pgsql_type' => 'boolean',
  'type' => 'int',
  'size' => 'tiny',
  'not null' => TRUE,
),
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.