2012-05-20 10 views
8

वहाँ किसी भी तरह से स्वत: इस आदेश का उपयोग किए बिना स्कीमा टेबल बना सिद्धांत बताने के लिए है:सिद्धांत स्वचालित रूप से सभी डेटाबेस टेबल बनाते हैं?

+0

आप PHP के भीतर से आदेश जारी कर सकते हैं ...? http://php.net/manual/en/function.exec.php –

उत्तर

18

SchemaTool और EntityManager का उपयोग करके आप यह कर सकते हैं:

$schemaTool = new \Doctrine\ORM\Tools\SchemaTool($entityManager); 
$classes = $entityManager->getMetadataFactory()->getAllMetadata(); 
$schemaTool->createSchema($classes); 
+0

मैं कैसे निर्धारित कर सकता हूं कि स्कीमा पहले बनाया गया है या नहीं? –

+0

मुझे विश्वास नहीं है कि स्कीमा बनाया गया है या नहीं, यह देखने का एक तरीका है। मेरे अनुभव में, मैंने इसे बनाने से पहले '$ schemaTool-> ड्रॉपस्मिथ ($ कक्षाएं) 'का उपयोग किया है। – trevorengstrom

+1

@ सिना मियांदाश्ती आप भी कोशिश कर सकते हैं। 'कोशिश करें // // यहां टेबल कोड बनाएं} पकड़ें (\ Doctrine \ ORM \ Tools \ ToolsException $ exc) {// तालिका मौजूद है} ' – Hokusai

4

मुझे यकीन है कि आप क्या करना चाहते हैं नहीं कर रहा हूँ, लेकिन अगर आप php कोड से यह करने के लिए चाहते हैं, आप जाँच कर सकते हैं सिद्धांत कमांड कैसे काम करता है और कोड कॉपी करता है। आप इसे यहां पा सकते हैं:

vendor/symfony/src/Symfony/Bundle/DoctrineBundle/Command/CreateDatabaseDoctrineCommand.php 

यदि आप निष्पादन विधि की जांच करते हैं, तो आप देखेंगे कि यह कैसे किया जाता है। स्पष्ट रूप से आपको डीबीएएल ड्राइवर प्रबंधक के माध्यम से कनेक्शन प्राप्त करने की आवश्यकता है, जो आपको स्कीमा ऑब्जेक्ट तक पहुंच प्रदान करता है, जिसके बदले में createDatabase विधि होती है। मैंने यह कोशिश नहीं की है।

संबंधित मुद्दे