current_timestamp trong trường ngày


8

Làm cách nào tôi có thể thêm current_timestamp hoặc bây giờ cho ngày tháng yếu trong lược đồ cơ sở dữ liệu drupal.

        'created' => array(
            'description' => t('Timestamp when the fee schedule was added.'),
            'type' => 'int',
            'not null' => TRUE,
            'unsigned' => TRUE,
        ),

1
Tôi đã có một tìm kiếm trên user.module. Drupal đang tiết kiệm được tạo như $ mảng ['created'] = time ();
niksmac

Câu trả lời:


6

Bạn có thể chỉ định loại cột dành riêng cho trình điều khiển cho MySQL bằng mysql_typethuộc tính:

function MYMODULE_schema (){
  $schema['table_name'] = array(
    'fields' => array(
      'created' => array(
        'mysql_type' => 'timestamp',
        'not null' => TRUE
      )
    )
  );

  return $schema;
}

Sau đó, khi bật mô-đun của bạn, bạn chỉ cần sửa đổi cột để thêm hành vi mặc định / cập nhật:

function MYMODULE_enable() {
  db_query('
    ALTER TABLE {table_name} 
    MODIFY created TIMESTAMP NOT NULL 
    DEFAULT CURRENT_TIMESTAMP 
    ON UPDATE CURRENT_TIMESTAMP'
  );
}

Tôi vừa mới thử nghiệm trên Drupal 7 và nó có hiệu quả.

LƯU Ý: Nếu bạn không muốn dấu thời gian cập nhật mỗi khi bản ghi được cập nhật thì chỉ cần xóa ON UPDATE CURRENT_TIMESTAMPphần truy vấn.


1

Tôi giả sử bạn đang đề cập đến MySQL, tính năng bạn muốn xem xét trực tiếp từ các tài liệu là dấu thời gian .

Điều này có thể sẽ cập nhật bảng db được tạo bởi lược đồ thành loại trường bạn đang tìm kiếm:

MODIFY COLUMN `created` TIMESTAMP NOT NULL DEFAULT current_timestamp;

Chỉ tình cờ thấy bài đăng này nêu rõ hỗ trợ dấu thời gian nên có trong Drupal 8, vì vậy tôi cho rằng (và tôi có thể sai) có lẽ nó không được hỗ trợ ngoài D7. Chỉ cần thay đổi loại thành TIMESTAMP trong mảng của bạn và xem những gì mang lại nhưng tôi sẽ không đặt cược vào hoạt động này thông qua api lược đồ D7.

CẬP NHẬT:

Trên thực tế, nhìn vào bài viết. Bản vá sẽ thêm hỗ trợ cho dấu thời gian trong D7. Các vị thần lớn đến drupalshrek vì đã chia sẻ điều này với chúng tôi.

Lược đồ cơ sở dữ liệu, một khi được vá sẽ như sau:

<?php
$schema['vchess_moves'] = array(
  'description' => 'Contains the list of moves for each game',
  'fields' => array(
    'timestamp' => array(
    'description' => 'Exact date and time of the move',
    'type' => 'timestamp',
    'not null' => TRUE,
?>

Đi xem bài viết ở trên để biết bản vá, tôi sẽ không đăng lại nội dung của anh ấy ở đây, không chắc liệu làm như vậy có đúng không.

Hy vọng điều này sẽ giúp, mã hóa hạnh phúc.


0

Đây là giải pháp cho Drupal 8.6.x chỉ cần thực hiện nếu có ai đó trông giống như tôi :)

'created' => [
  'mysql_type' => 'timestamp',
  'not null' => TRUE,
  'mysql_default' => CURRENT_TIMESTAMP,
 ],

cái này tương đương với ...

`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.