ฉันจะสร้างตารางในโมดูลที่กำหนดเองได้อย่างไร


13

ใน Drupal 7 เราเคยใช้hook_schema()ในไฟล์. install เพื่อสร้างตาราง ฉันเชื่อว่าใน Drupal 8 คุณสามารถทำได้เช่นกัน แต่ฉันรู้สึกว่าคุณควรสร้างไฟล์. syml ด้วยสคีมาของคุณ

วิธีสร้างตารางใน Drupal 8 คืออะไร


3
ไม่ถูกต้อง hook_schemaยังคงเป็นวิธีการสร้างตารางที่กำหนดเองใน Drupal 8 ที่ไม่ได้อธิบายไว้โดยหน่วยงานเนื้อหาหรือสาขา หากตารางที่กำหนดเองของคุณเป็นสิ่งที่คุณจะพิจารณาว่า "เนื้อหา" ฉันจะใช้เอนทิตี้ แต่ถ้ามันต้องเร็วขึ้นและจะมีจำนวนแถวที่ จำกัด และคุณไม่ได้ทำการแคชใด ๆ ที่ส่วนหน้าดังนั้นตารางที่กำหนดเอง ไม่เป็นไร คุณควรพิจารณาว่าตารางนี้เป็น "การกำหนดค่า" ซึ่งในกรณีนี้การกำหนดค่าเอนทิตีหรือวัตถุเป็นวิธีที่จะไป
mradcliffe

คำตอบ:


10

hook_schema()ยังคงใช้จากโมดูล Drupal 8 เพื่อสร้างตารางฐานข้อมูลแบบกำหนดเองที่ใช้จากโมดูล แม้กระทั่งผู้ใช้และโมดูลโหนดใช้มันแม้ว่าuser_schema()และnode_schema()ไม่ได้กำหนด schema สำหรับหน่วยงานที่เกี่ยวข้องซึ่งถูกสร้างขึ้นในลักษณะที่แตกต่าง

สคีกำหนดค่าไม่ได้ใช้ในการสร้างตารางฐานข้อมูลที่กำหนดเองการใช้โมดูล แต่อธิบายโครงสร้างของแฟ้มการกำหนดค่า ไฟล์ PDF ที่พบในเอกสารที่ฉันเชื่อมโยงทำให้ชัดเจนเกี่ยวกับความสัมพันธ์ระหว่างไฟล์การกำหนดค่าและสคีมาของมัน

ภาพหน้าจอ

หน่วยงานที่เนื้อหาไม่ได้ใช้hook_schema(); Drupal สร้างตารางฐานข้อมูลสำหรับการอ้างอิงในฟิลด์ฐานที่คลาสเอนทิตีเนื้อหากำหนด

วิธีการใช้งานขึ้นอยู่กับโมดูลที่กำหนด มันขึ้นอยู่กับโมดูลที่กำหนดเอนทิตีเนื้อหาหน่วยการกำหนดค่าหรือเพียงแค่ใช้ตารางที่กำหนดเอง โมดูลสามารถใช้งานได้ทั้งหมด


9

คุณสามารถใช้ hook install เพื่อสร้างตารางของคุณเองได้หากคุณต้องการจริงๆแม้ว่า Drupal จะมีวิธีแก้ไขปัญหาแบบอื่น ๆ อีกมากมาย แต่ถ้าคุณต้องการที่จะม้วนของคุณเองมีโมดูลตัวอย่างที่เรียกว่า dbtng_example ในโมดูลตัวอย่าง: https://www.drupal.org/project/examplesพร้อมเส้นทางสำหรับการเพิ่มและลบรายการฐานข้อมูลที่กำหนดเองของคุณ

ฉันขอแนะนำให้ติดตั้งและลองใช้งานแล้วคุณสามารถใช้เป็นพื้นฐานสำหรับการสร้างตารางฐานข้อมูลของคุณเองใน Drupal 8

อีกวิธีในการพิจารณาคือการสร้างเอนทิตีการกำหนดค่าหรือเอนทิตีเนื้อหา

หากคุณใช้เครื่องมือบรรทัดคำสั่ง drupal มีแม้กระทั่งคำสั่งสำหรับการสร้าง "drupal generate: entity: config" และ "drupal generate: entity: content"

นอกจากนี้ในโมดูลตัวอย่างยังมี config_entity_example และ content_entity_example

จากhttps://www.previousnext.com.au/blog/understanding-drupal-8s-config-entities : "ความแตกต่างที่สำคัญระหว่างเนื้อหาและเอนทิตี config คือวิธีจัดเก็บและหน่วยงานปรับแต่ง (ในขณะนี้) ไม่สามารถใช้ฟิลด์ได้ "

ยังมีโซลูชันอื่น ๆ อีกมากมายเช่นโมดูล config_pages ที่ช่วยให้คุณสามารถหมุนสถานที่เพื่อจัดเก็บข้อมูลบนเว็บไซต์ของคุณได้อย่างง่ายดาย: https://www.drupal.org/project/config_pages

เมื่อเร็ว ๆ นี้เราใช้สิ่งเหล่านี้สำหรับหน้า Landing Page หนึ่งหน้าโดยการสร้างตัวควบคุมและเส้นทาง สิ่งนี้มีข้อได้เปรียบอย่างมากเหนือตารางที่กำหนดเองเนื่องจากคุณสามารถเพิ่มเขตข้อมูลใหม่ได้อย่างง่ายดายและคุณสามารถใช้ชนิดข้อมูลเช่นรูปภาพและการอ้างอิงเอนทิตีได้อย่างง่ายดายนอกจากนี้คุณยังสามารถตั้งค่าตัวจัดรูปแบบฟิลด์และโหลดข้อมูล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.