2012-01-17 20 views
5

Tôi đang viết mô-đun Drupal 7 mới (Drupal 7.10, Ngày 7.x-2.0-rc1 đã cài đặt, Lược đồ 7.x-1.0-beta3 được cài đặt) tôi đã định nghĩa một bảng trong mymodule. cài đặt:Loại ngày giờ trong lược đồ Drupal 7

$schema['museums_tickets']= array(
    'fields' => array(
     'nid' => array(
     'type' => 'int', 
     'unsigned' => TRUE, 
     'not null' => TRUE, 
    ), 
    'day' => array(
     'type' => 'datetime', 
     'mysql_type' => 'DATETIME', 
     'not null' => TRUE, 
    ), 
    'tickets' => array(
     'type' => 'int', 
     'unsigned' => TRUE, 
     'not null' => TRUE, 
     ), 
    'ticket_code' => array(
      'type' => 'varchar', 
      'length' => 32, 
      'not null' => TRUE, 
      'default' => '', 
     ), 
    ), 
    'primary key' => array('nid', 'day','ticket_code'), 
); 

nhưng tôi có được các lỗi sau đây:

Field museums_tickets.day: no Schema type for mysql type datetime. 
museums_tickets.day: no type for Schema type datetime. 
Field museums_tickets.day: no Schema type for type datetime. 

cũng áp dụng nếu tôi sử dụng

'type' => 'datetime:normal', 

Tôi muốn biết cách giải quyết vấn đề này. Tôi không muốn lưu trữ ngày làm dấu thời gian vì một người khác đã viết rất nhiều mã và rõ ràng là tôi không muốn viết lại tất cả. Tôi đã xem drupal 7 custom schema error datetime nhưng câu trả lời không hoạt động. Có lẽ tôi đang làm điều gì đó sai, nhưng tôi không tìm thấy gì.

Cảm ơn bạn trước.

Trả lời

15

Nếu bạn nhìn vào lược đồ của các mô-đun ngày bạn sẽ tìm thấy một cái gì đó giống như

'day' => array(
    'type' => 'datetime', 
    'mysql_type' => 'datetime', 
) 

Thực ra câu trả lời của Clive là người tôi chọn đầu tiên nhưng sau đó đã cho tôi vấn đề với các module Views.

thực hiện này của các mô-đun Ngày tiết kiệm ngày của tôi

8

Các công trình sau đây cho tôi (Drupal 7.10):

'day' => array(
    'mysql_type' => 'DATETIME', 
    'not null' => TRUE, 
) 

(chú ý mysql_type chính thay vìtype)

Từ Schema docs:

If you need to use a record type not included in the officially supported list of types above, you can specify a type for each database backend. In this case, you can leave out the type parameter

datetime không phải là một loại generic được cho phép trong Drupal 7 vì vậy hãy để Phím type sẽ luôn gây ra lỗi.

+0

Tôi đã thử nó trong một mô-đun mới, nhưng nó không tạo ra bàn khi cài đặt nó. – user1014351

+0

Bạn nhận được bất kỳ lỗi nào – Clive

+0

tôi đã thử nó trong drupal 7,17 nhưng có lỗi: không có loại lược đồ cho datetime kiểu mysql. – sumanchalki

0

Các ngày mô-đun contrib có:

function date_field_schema($field) { 
    $db_columns = array(); 
    switch ($field['type']) { 
    case 'datestamp': 
     $db_columns['value'] = array(
     'type' => 'int', 
     'not null' => FALSE, 
     'sortable' => TRUE, 
     'views' => TRUE, 
    ); 
     break; 

    case 'datetime': 
     $db_columns['value'] = array(
     'type' => 'datetime', 
     'mysql_type' => 'datetime', 
     'pgsql_type' => 'timestamp without time zone', 
     'sqlite_type' => 'varchar', 
     'sqlsrv_type' => 'smalldatetime', 
     'not null' => FALSE, 
     'sortable' => TRUE, 
     'views' => TRUE, 
    ); 
     break; 

    default: 
     $db_columns['value'] = array(
     'type' => 'varchar', 
     'length' => 20, 
     'not null' => FALSE, 
     'sortable' => TRUE, 
     'views' => TRUE, 
    ); 
     break; 
    } 
Các vấn đề liên quan