ใน Drupal 7 เราเคยใช้hook_schema()
ในไฟล์. install เพื่อสร้างตาราง ฉันเชื่อว่าใน Drupal 8 คุณสามารถทำได้เช่นกัน แต่ฉันรู้สึกว่าคุณควรสร้างไฟล์. syml ด้วยสคีมาของคุณ
วิธีสร้างตารางใน Drupal 8 คืออะไร
ใน Drupal 7 เราเคยใช้hook_schema()
ในไฟล์. install เพื่อสร้างตาราง ฉันเชื่อว่าใน Drupal 8 คุณสามารถทำได้เช่นกัน แต่ฉันรู้สึกว่าคุณควรสร้างไฟล์. syml ด้วยสคีมาของคุณ
วิธีสร้างตารางใน Drupal 8 คืออะไร
คำตอบ:
hook_schema()
ยังคงใช้จากโมดูล Drupal 8 เพื่อสร้างตารางฐานข้อมูลแบบกำหนดเองที่ใช้จากโมดูล แม้กระทั่งผู้ใช้และโมดูลโหนดใช้มันแม้ว่าuser_schema()
และnode_schema()
ไม่ได้กำหนด schema สำหรับหน่วยงานที่เกี่ยวข้องซึ่งถูกสร้างขึ้นในลักษณะที่แตกต่าง
สคีกำหนดค่าไม่ได้ใช้ในการสร้างตารางฐานข้อมูลที่กำหนดเองการใช้โมดูล แต่อธิบายโครงสร้างของแฟ้มการกำหนดค่า ไฟล์ PDF ที่พบในเอกสารที่ฉันเชื่อมโยงทำให้ชัดเจนเกี่ยวกับความสัมพันธ์ระหว่างไฟล์การกำหนดค่าและสคีมาของมัน
หน่วยงานที่เนื้อหาไม่ได้ใช้hook_schema()
; Drupal สร้างตารางฐานข้อมูลสำหรับการอ้างอิงในฟิลด์ฐานที่คลาสเอนทิตีเนื้อหากำหนด
วิธีการใช้งานขึ้นอยู่กับโมดูลที่กำหนด มันขึ้นอยู่กับโมดูลที่กำหนดเอนทิตีเนื้อหาหน่วยการกำหนดค่าหรือเพียงแค่ใช้ตารางที่กำหนดเอง โมดูลสามารถใช้งานได้ทั้งหมด
คุณสามารถใช้ 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 หนึ่งหน้าโดยการสร้างตัวควบคุมและเส้นทาง สิ่งนี้มีข้อได้เปรียบอย่างมากเหนือตารางที่กำหนดเองเนื่องจากคุณสามารถเพิ่มเขตข้อมูลใหม่ได้อย่างง่ายดายและคุณสามารถใช้ชนิดข้อมูลเช่นรูปภาพและการอ้างอิงเอนทิตีได้อย่างง่ายดายนอกจากนี้คุณยังสามารถตั้งค่าตัวจัดรูปแบบฟิลด์และโหลดข้อมูล
hook_schema
ยังคงเป็นวิธีการสร้างตารางที่กำหนดเองใน Drupal 8 ที่ไม่ได้อธิบายไว้โดยหน่วยงานเนื้อหาหรือสาขา หากตารางที่กำหนดเองของคุณเป็นสิ่งที่คุณจะพิจารณาว่า "เนื้อหา" ฉันจะใช้เอนทิตี้ แต่ถ้ามันต้องเร็วขึ้นและจะมีจำนวนแถวที่ จำกัด และคุณไม่ได้ทำการแคชใด ๆ ที่ส่วนหน้าดังนั้นตารางที่กำหนดเอง ไม่เป็นไร คุณควรพิจารณาว่าตารางนี้เป็น "การกำหนดค่า" ซึ่งในกรณีนี้การกำหนดค่าเอนทิตีหรือวัตถุเป็นวิธีที่จะไป