Jak utworzyć tabelę podczas instalacji modułu

14

Próbuję utworzyć moduł dla Drupal 7 i muszę utworzyć 3 tabele i zapełnić go. Ale najpierw muszę go stworzyć.

W pliku mymodule.install mam

function mymodule_install() {

}

function mymodule_uninstall() {

}


function myodule_schema() {
  $schema['mymodule_table'] = array(
    'description' => t('First table'),
    'fields' => array(
      'id' => array(
        'description' => t('My unique identifier'),
        'type' => 'int',
        'unsigned' => true,
        'not null' => true,
      ),
      'list' => array(
        'description' => t('list'),
        'type' => 'varchar',
        'not null' => true,
      ),
    ),
    'primary key' => array('id'),
  );
  return $schema;     
}

Co ja robię źle? Za każdym razem, gdy testuję moduł, wyłączam go -> odinstaluj -> Wyczyść pamięć podręczną wydajności -> włącz go.

Tyler Durden
źródło
3
Jeśli masz zainstalowany Drush i Devel, możesz użyć go drush devel-reinstall mymoduledo szybkiej ponownej instalacji modułu
FLY

Odpowiedzi:

11

Brakuje lengthwłaściwości varcharkolumny („lista”). lengthjest wymagane, więc CREATE TABLEzapytanie nie powiedzie się.

Z dokumentacji interfejsu API schematu :

Wszystkie parametry oprócz „typu” są opcjonalne, z wyjątkiem tego, że kolumny „numeryczne” typu muszą określać „precyzję” i „skalę”, a kolumny „varchar” muszą określać „długość”.

Clive
źródło
4

myodule_schemama literówkę. mBrakuje po y.

BetaRide
źródło
Dzięki BetaRide to był błąd w transkrypcji. Daję ci jeden głos, ponieważ przeczytałeś mój post i naprawdę znalazłem błąd w pisowni nazwy funkcji eh eh
Tyler Durden