2011-11-29 4 views
34

कोई त्रुटि मिलती है। हालांकि, सभी दस्तावेज और ब्लॉग पोस्ट सिम्फनी < 1.4 पर प्रतिक्रिया दे रहे हैं। क्या सिम्फनी 2 में कोई समाधान होगा?जब मैं <code>doctrine:mapping:import</code> चल Symfony 2 में enums कैसे सक्षम करें/सिद्धांत

+0

मुझे लगता है कि आप [MySQL Enums] (http में अपने प्रश्न का उत्तर मिल जाएगा: // www.doctrine-project.org/docs/orm/2.1/en/cookbook/mysql-enums.html) कुकबुक कला icle। –

+0

थोड़ा देर हो चुकी है, लेकिन मुझे लगता है कि मेरा जवाब आपके लिए सही है @umpirsky – PutzKipa

+1

लेकिन यह कोड कहां रखना है, तो यह कहां चला जाता है जब 'सिद्धांत: मैपिंग: आयात' शुरू होता है? – umpirsky

उत्तर

108

Symfony 2 परियोजनाओं के लिए, app/config.yml में सिद्धांत dbal विन्यास से जोड़ें:

doctrine: 
    dbal: 
     mapping_types: 
      enum:  string 

मेरा पूरा सिद्धांत config इस तरह दिखता है:

# Doctrine Configuration 
doctrine: 
    dbal: 
     driver: %database_driver% 
     host:  %database_host% 
     port:  %database_port% 
     dbname: %database_name% 
     user:  %database_user% 
     password: %database_password% 
     charset: UTF8 
     mapping_types: 
      enum: string 
      set: string 
      varbinary: string 
      tinyblob: text 

    orm: 
     auto_generate_proxy_classes: %kernel.debug% 
     auto_mapping: true 

कोड से here

तब अनुकूलित रन:

app/console doctrine:schema:update --force --dump-sql --ansi

+5

हाँ यह काम करता है लेकिन मुझे लगता है कि समस्या यह है कि जब आप "php app/console doctrine: schema: update --force" करते हैं तो यह डेटाबेस से सभी enum प्रकार मिटा देता है – mahen3d

0

सिद्धांत कुकबुक को ध्यान में रखते हुए केवल आंशिक उत्तर प्रदान करता है कि कैसे enums स्ट्रिंग के रूप में व्याख्या करने के लिए, निम्नलिखित कार्य को कॉन्फ़िगर किया गया है इस पर ध्यान दिए बिना कार्य करना चाहिए।

त्रुटि आप फ़ाइल का नाम पर कहते हैं: Doctrine\DBAL\Platforms\MySqlPlatform .php - वहाँ में, आप मिल जाएगा इस प्रकार है कि डिफ़ॉल्ट सूची समारोह initializeDoctrineTypeMappings में अंतर्निहित है:

$this->doctrineTypeMapping = array(
      'tinyint'  => 'boolean', 
      'smallint'  => 'smallint', 
      'mediumint'  => 'integer', 
      'int'   => 'integer', 
      (...) 

सरल enum समर्थन जोड़ा जा रहा है सभी सिद्धांत उपयोगकर्ताओं के लिए, सेटअप के बाकी की परवाह किए बिना, बस के साथ सूची का विस्तार करके हासिल की है:

'enum' => 'string'