Bagaimana cara membuat tabel dalam modul khusus

12

Di Drupal 7 kami biasa menggunakan hook_schema()file .install untuk membuat tabel. Saya percaya bahwa, di Drupal 8, Anda dapat melakukannya juga, tetapi saya mendapat kesan bahwa Anda harus membuat file .yml dengan skema Anda.

Apa metode untuk membuat tabel di Drupal 8?

albertski
sumber
3
Tidak, kamu benar. hook_schemamasih merupakan cara untuk membuat tabel khusus di Drupal 8 yang tidak dijelaskan oleh entitas konten atau bidang . Jika tabel kustom Anda adalah sesuatu yang Anda anggap "konten", maka saya akan menggunakan entitas, tetapi jika perlu lebih cepat dan akan memiliki jumlah baris terbatas dan Anda tidak melakukan caching di ujung depan, maka tabel khusus baik-baik saja. Anda juga harus mempertimbangkan apakah tabel ini adalah "konfigurasi", dalam hal ini entitas konfigurasi atau objek adalah cara untuk pergi.
mradcliffe

Jawaban:

9

hook_schema()masih digunakan dari modul Drupal 8 untuk membuat tabel database khusus yang digunakan dari modul. Bahkan modul Pengguna dan Node mengimplementasikannya, meskipun user_schema()dan node_schema()tidak mendefinisikan skema untuk masing-masing entitas, yang dibuat dengan cara yang berbeda.

The konfigurasi skema tidak digunakan untuk membuat tabel database kustom modul penggunaan, tetapi menggambarkan struktur file konfigurasi. File PDF yang ditemukan dalam dokumentasi yang saya tautkan memperjelas hubungan antara file konfigurasi dan skemanya.

tangkapan layar

Entitas konten tidak menggunakan hook_schema(); Drupal membuat tabel database untuk mereka berdasarkan pada bidang dasar yang didefinisikan oleh kelas entitas konten.

Metode mana yang digunakan tergantung pada apa yang didefinisikan oleh modul. Terserah modul mendefinisikan entitas konten, entitas konfigurasi, atau cukup gunakan tabel khusus. Modul bahkan bisa menggunakan semuanya.

kiamlaluno
sumber
8

Anda dapat menggunakan pemasangan kait untuk membuat tabel Anda sendiri, jika Anda benar-benar menginginkannya, walaupun Drupal memiliki banyak solusi lain yang tidak tersedia. Tetapi jika Anda ingin membuat sendiri, ada modul contoh, yang disebut dbtng_example, dalam modul contoh: https://www.drupal.org/project/examples , lengkap dengan perutean untuk menambah dan menghapus entri basis data khusus Anda.

Saya akan merekomendasikan menginstalnya dan mencobanya, maka Anda dapat menggunakannya sebagai dasar untuk membuat tabel database Anda sendiri di Drupal 8.

Pendekatan lain yang perlu dipertimbangkan adalah membuat entitas konfigurasi atau entitas konten.

Jika Anda menggunakan alat baris perintah drupal bahkan ada perintah untuk menghasilkan "drupal generate: entitas: config", dan "drupal generate: entity: content".

Juga dalam modul contoh, ada config_entity_example dan content_entity_example.

Dari https://www.previousnext.com.au/blog/understanding-drupal-8s-config-entities : "Perbedaan utama antara konten dan entitas konfigurasi adalah bagaimana mereka disimpan dan (saat ini) entitas config tidak dapat fieldable ".

Ada beberapa solusi lain di luar kotak, seperti modul config_pages yang memungkinkan Anda untuk dengan mudah memutar tempat untuk menyimpan data di situs Anda: https://www.drupal.org/project/config_pages

Kami baru-baru ini menggunakan ini untuk satu halaman tidak masuk, dengan membuat pengontrol dan rute. Ini memiliki keuntungan besar dibandingkan tabel kustom karena Anda dapat dengan mudah menambahkan bidang baru dan Anda dapat menggunakan tipe data seperti gambar dan referensi entitas dengan mudah, Anda juga dapat mengatur pemformat bidang, dan memuat data yang diformat menggunakan pembuat tampilan entitas config_pages.

oknate
sumber