current_timestamp di bidang tanggal


8

Bagaimana saya bisa menambahkan current_timestamp atau sekarang untuk feild tanggal dalam skema basis data drupal.

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

1
Saya sudah mencari di user.module. Drupal menyimpan yang dibuat seperti $ array ['Created'] = time ();
niksmac

Jawaban:


6

Anda dapat menentukan tipe kolom khusus driver untuk MySQL menggunakan mysql_typeatribut:

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

  return $schema;
}

Kemudian, saat mengaktifkan modul Anda, Anda bisa memodifikasi kolom untuk menambahkan perilaku default / saat diperbarui:

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

Saya baru saja mengujinya pada Drupal 7 dan berhasil.

CATATAN: Jika Anda tidak ingin cap waktu diperbarui setiap kali catatan diperbarui maka hapus saja ON UPDATE CURRENT_TIMESTAMPbagian dari kueri.


1

Saya berasumsi Anda merujuk ke MySQL, fitur yang ingin Anda lihat langsung dari dokumen adalah cap waktu .

Ini mungkin akan memperbarui tabel db yang dibuat oleh skema ke tipe bidang yang Anda cari:

MODIFY COLUMN `created` TIMESTAMP NOT NULL DEFAULT current_timestamp;

Hanya tersandung pada posting ini yang menyatakan dukungan cap waktu harus dalam untuk Drupal 8, jadi saya berasumsi (dan saya bisa salah) itu mungkin tidak didukung di luar kotak untuk D7. Cukup ubah tipe menjadi TIMESTAMP di array Anda, dan lihat apa yang memberi tetapi saya tidak akan bertaruh untuk ini bekerja melalui skema api D7.

MEMPERBARUI:

Sebenarnya, lihat di posting. Patch akan menambah dukungan untuk cap waktu di D7. Pujian besar untuk drupalshrek untuk berbagi dengan kami.

Skema basis data, yang pernah ditambal adalah sebagai berikut:

<?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,
?>

Pergi melihat posting di atas untuk tambalan, saya tidak akan memposting ulang barang-barangnya di sini, tidak yakin apakah melakukan itu akan tepat.

Semoga ini bisa membantu, selamat coding.


0

Berikut ini solusi untuk Drupal 8.6.x hanya memetikan jika seseorang terlihat seperti saya :)

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

ini setara dengan ...

`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.