การลบตารางโดยใช้ Doctrine2 และ Symfony2

ฉันจะลบตารางโดยใช้ Doctrine2 และ Symfony2 ได้อย่างไร ฉันได้สร้างเอนทิตีและสคีมาที่อัปเดตแล้ว ตอนนี้ฉันต้องการลบโครงสร้างนี้


person pamil    schedule 27.07.2012    source แหล่งที่มา
comment
ฉันไม่เข้าใจคำถาม.... คุณต้องการลบอะไร? เอนทิตีของคลาสด้วย ?   -  person DonCallisto    schedule 27.07.2012


คำตอบ (4)


ไม่แน่ใจว่าฉันเข้าใจคำถามของคุณถูกต้องหรือไม่ คุณได้ลบเอนทิตีและต้องการลบตารางที่สร้างขึ้นออกจากฐานข้อมูลด้วยหรือไม่ ถ้าใช่:

คุณไม่สามารถทำได้ เพราะ Doctrine2 ใส่ใจเฉพาะตารางที่รู้เท่านั้น นั่นหมายถึงตารางที่เอนทิตีเป็นตัวแทน เนื่องจากคุณได้ลบเอนทิตีบางส่วนออกจากแอปพลิเคชันของคุณ Doctrine จะไม่คิดว่าตารางนั้นเป็นของแอปพลิเคชันของคุณอีกต่อไป มีสถานการณ์เมื่อมีตารางที่แตกต่างกันของแอปพลิเคชันที่แตกต่างกันในฐานข้อมูลเดียวกัน มันคงไม่สมเหตุสมผลถ้า Doctrine ลบพวกเขาเพียงเพราะมันไม่รู้อะไรเกี่ยวกับพวกเขาเลย มันจะเป็นการแบ่งแยกเชื้อชาติ...แต่กับโต๊ะ

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

person Ondrej Slinták    schedule 27.07.2012
comment
คุณสามารถวางตารางได้โดยใช้คำสั่งคอนโซล: stackoverflow.com/a/44952099/3409662 - person Sébastien; 06.07.2017
comment
ฉันคิดว่าคุณหมายถึง...นักโต๊ะ - person Johnny; 28.05.2021

คุณสามารถทำ raw sql ได้

ตัวอย่างเช่นในคอนโทรลเลอร์ Symfony2:

$em = $this->getDoctrine()->getManager();
$sql = 'DROP TABLE hereYourTableName;';
$connection = $em->getConnection();
$stmt = $connection->prepare($sql);
$stmt->execute();
$stmt->closeCursor();
person Hokusai    schedule 13.11.2013

เพียงลบตารางที่คุณไม่ได้ใช้ด้วยตนเองอีกต่อไป...หลักคำสอนจะละเว้นตารางที่ไม่ได้แมปโดยสิ้นเชิง

person Lusitanian    schedule 27.07.2012

ใน Doctrine 2.6.2 คุณสามารถ DROP table ได้โดยการลบคลาสเอนทิตี หลังจาก Migrations:diff คุณจะได้รับไฟล์ใหม่พร้อมแบบสอบถาม DROP TABLE Migrates:migrate จะดำเนินการคำสั่งที่ปล่อยตารางที่ต้องการ คลาสที่กำลังจะลบมีความสัมพันธ์กับเอนทิตีอื่น ดังนั้นฉันจึงต้องลบการกล่าวถึงคลาสเอนทิตีเก่าในเอนทิตีอื่นทั้งหมดอย่างไร้ความปราณี (ด้วยตนเอง) เพิ่งทดสอบ.

person JohnyProkie    schedule 16.09.2018