Saya telah menulis file mymodule.install yang berisi definisi skema untuk membuat tabel di database saya. Tabel ini berisi dua bidang data. Bidang ini akan diisi oleh pengguna saat mereka akan mengisi konten tertentu (misalnya: untuk menentukan tanggal publikasi untuk suatu berita). Sekarang saya tidak menggunakan modul kontribusi Tanggal sengaja, karena saya perlu bahwa dua bidang ini berada di baris yang sama di tabel database karena alasan lain.
Hook_schema mendefinisikan dua bidang dengan cara ini:
'pubblish_date' => array(
'description' => t('The pubblish date for the single news'),
'mysql_type' => 'datetime',
'not null' => FALSE,
),
'unpublish_date' => array(
'description' => t('The unpublish date for the single news'),
'mysql_type' => 'datetime',
'not null' => FALSE,
),
Tabel dibuat dengan benar dalam database, tetapi saya selalu mendapatkan pesan saran ini:
Bidang news_board.pubblish_date: tidak ada tipe Skema untuk datetime tipe mysql. Bidang news_board.unpublish_date: tidak ada tipe Skema untuk datetime tipe mysql. news_board.pubblish_date: tidak ada tipe untuk tipe Skema: normal. Field news_board.pubblish_date: tidak ada tipe Skema untuk tipe. news_board.unpublish_date: tidak ada tipe untuk tipe Skema: normal. Bidang news_board.unpublish_date: tidak ada tipe Skema untuk tipe.
Sepertinya aneh bagi saya karena saya merah pada dokumentasi untuk menggunakan spesifikasi mysql_type untuk menyimpan format datetime dalam database mysql.
Saya tahu bahwa Drupal mendukung cap waktu asli dan jika Anda ingin menyimpan format tanggal yang berbeda, Anda harus menggunakan definisi spesifik seperti mysql_type atau pgsql_type sesuai dengan database yang Anda gunakan.
Dalam diskusi saya menemukan banyak orang online menggunakan definisi mysql_type dan dari apa yang saya lihat mereka memecahkan masalah, jadi mengapa itu tidak berhasil bagi saya?
Terima kasih banyak.
•Field news_board.pubblish_date: no Schema type for mysql type datetime. •Field news_board.unpublish_date: no Schema type for mysql type datetime.
Jika Anda perlu menggunakan tipe catatan yang tidak termasuk dalam daftar tipe yang didukung secara resmi, Anda bisa menentukan tipe untuk setiap backend database.
Dalam hal ini, Anda dapat mengabaikan parameter tipe, tetapi maklumi bahwa skema Anda akan gagal memuat pada backend yang tidak memiliki tipe yang ditentukan. Solusi yang mungkin adalah dengan menggunakan tipe "teks" sebagai fallback. ( https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Database%21database.api.php/group/schemaapi/8.2.x )
'submit_date' => array( 'type' => 'varchar', 'mysql_type' => 'datet', )
sumber