Koleksi Bidang vs. Referensi Entitas


14

Bagaimana pengumpulan bidang merupakan keuntungan? Anda bisa melakukan hal yang sama dengan tipe konten baru yang menunjuk ke induk dengan Referensi Entitas.

Mungkin seseorang dapat memecah beberapa situasi di mana masing-masing akan lebih baik.

Katakan untuk Tugas -> File, apakah kumpulan bidang akan lebih baik atau tipe konten baru dengan Referensi Entitas?

Katakan untuk setiap file yang Anda perlukan lebih banyak data lain tentang file itu, terdengar seperti rencana untuk tipe baru dengan Referensi Entitas, tetapi Anda bisa menyematkan kumpulan bidang di dalam kumpulan bidang.

Saya menikmati bagaimana Drupal memiliki banyak cara untuk melakukan hal yang sama, tetapi saya tidak dapat menemukan banyak tentang betapa berbedanya atau miripnya kedua solusi ini.

Mungkin seseorang bisa membantu menjelaskan?

Jawaban:


15

Ini adalah pertanyaan yang saya buat sendiri ketika menghadapi proyek baru, Koleksi Bidang vs Referensi Entitas + entitas kustom atau jika strukturnya sederhana, Koleksi Lapangan vs bidang khusus dengan beberapa kolom db / Multifield . Inilah pendapat saya berdasarkan pengalaman saya .

Multifield adalah konsep yang hebat, itu akan menjadi versi "ringan" dari kumpulan bidang, alih-alih membuat struktur entitas dengan hubungan, itu mencakup kasus penggunaan sederhana tanpa membuat entitas. Ini memiliki sejumlah masalah , meskipun, seperti integrasi Fitur tidak lengkap, tidak benar-benar multibahasa dll (jadi jika Anda berencana untuk menggunakan ini, kontribusi mungkin akan sangat diterima).

Field Collection adalah solusi hebat jika Anda melakukan situs yang dapat dilakukan hanya dengan beberapa penyesuaian di sana-sini, ini memberi pembangun situs alat yang ampuh untuk membuat struktur yang kompleks tanpa terlalu mengkhawatirkan internal. Pada dasarnya ia akan membuat entitas yang berhubungan dengan entitas "host" oleh id, memungkinkan untuk menambahkan bidang ke dalamnya dan semuanya. Kerugian akan datang dalam pengetahuan internal koleksi Lapangan yang Anda butuhkan untuk melakukan operasi kompleks seperti mengelola Koleksi Lapangan dengan Referensi Entitas di atasnya, atau memigrasi data. Karena ini adalah alat generik, itu akan cukup rumit untuk melangkah lebih jauh.

Pilihan lain yang Anda miliki di sana adalah menggunakan ECK dengan Referensi Entitas, tetapi pengalaman saya dengan ini telah menjadi bencana sejauh ini, saya merasa jauh lebih mudah untuk membuat jenis entitas dengan kode tanpa bantuan.

Ini masalah apa yang Anda butuhkan dan apa yang paling cocok untuk proyek Anda, jika Anda punya waktu dan pengembang untuk membuat tipe entitas yang berhubungan dengan model data Anda melalui Entity Reference, Anda akan memiliki kontrol lebih besar atas apa yang terjadi dengan struktur data Anda, tetapi Anda juga "bertanggung jawab" untuk itu.

Setelah menguji beberapa saat dengan semua solusi yang dijelaskan di atas, di tim saya kami selalu mencari tipe entitas + ER, tapi saya bisa melihat bahwa untuk proyek-proyek kecil, tanpa migrasi data atau pengaturan i18n yang rumit, Field Collection hanyalah cara tercepat untuk Pergilah.


Tinjauan yang bagus. Saya hanya ingin berkomentar bahwa kumpulan bidang mendukung migrasi melalui modul migrasi.
lefterav

1
Satu aspek lain berkaitan dengan versi / revisi. Jenis konten (node) memiliki solusi siap untuk melacak dengan revisi, dan perubahan pada koleksi bidang terlampir tercermin ke simpul induk. Sebaliknya, entitas memiliki revisi sendiri, tidak relevan dengan entitas yang dimaksud.
lefterav

@lefterav memang, apa yang saya maksud adalah bermigrasi kumpulan bidang bisa menjadi tugas yang sangat sulit untuk beberapa kasus penggunaan dan harus dipertanggungjawabkan.
pcambra

3

Ini benar-benar tergantung pada data yang Anda input di bidang dan penggunaan yang ingin Anda lakukan dengannya.

Jika Anda ingin menggunakan Kumpulan Bidang, pastikan Anda dapat melakukan apa pun yang ada dalam ruang lingkup Anda, dari tampilan normal, hingga terjemahan, pengindeksan solr dll.

Jika Anda ingin menggunakan kembali informasi yang Anda tambahkan ke dalam kumpulan bidang, akan lebih baik menggunakan tipe konten atau entitas khusus. Contoh: Kursus sekolah memiliki 5 topik. Sebuah topik berisi 3 bidang: Judul, jam, dan level. Jika Anda akan menggunakan kembali topik dalam beberapa kursus sekolah, pilih tipe Konten / Entitas Ubahsuaian dan gunakan referensi Entitas.


0

Mereka harus kira-kira setara dalam kinerja, tetapi pengumpulan bidang menggunakan API Entitas dan tidak memerlukan pembuatan tipe konten khusus.

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.