Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डॉक्ट्रिन कन्वर्ट-मैपिंग चलाते समय टेबल छोड़ें

सिद्धांत के रूपांतरण और सत्यापन के साथ मुख्य मुद्दा यह है कि यह संपूर्ण डेटाबेस और सभी तालिकाओं को डिफ़ॉल्ट रूप से पढ़ता है, भले ही उनके लिए इकाइयां या मैपिंग मौजूद हों या नहीं। --filter="" . का उपयोग करते समय भी orm:convert:mapping calling को कॉल करते समय ध्वजांकित करें या orm:generate:entities

इस मुद्दे को हल करने के लिए और अपवादों को फेंकने वाले सिद्धांत को छोड़ने के लिए, आप सिद्धांत को केवल अपनी इच्छित तालिकाओं को पढ़ने के लिए सेट कर सकते हैं, उन्हें setFilterSchemaAssetsExpression के साथ परिभाषित करके

$isDev = true;

$config = \Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration(array('/path/to/entities'), $isDev);
$config->setFilterSchemaAssetsExpression('/^(table1|table2|prefixed_.*|.*_suffixed)$/');

$em =  \Doctrine\ORM\EntityManager::create(array(
    'driver' => 'db_driver',
    'host' => 'localhost',
    'user' => 'user_name',
    'password' => 'user_password',
    'dbname' => 'database',
), $config);

या आप मौजूदा इकाई प्रबंधक के कनेक्शन के लिए फ़िल्टर सेट कर सकते हैं।

$em->getConnection()->setFilterSchemaAssetsExpression('/^(filtered_table)$/');

संदर्भ:http://doctrine-orm.readthedocs.org/en /नवीनतम/संदर्भ/कॉन्फ़िगरेशन.html

माना कि यह अपवादों को अनदेखा करने के सिद्धांत को बताने का एक तरीका नहीं है, लेकिन पूरे डेटाबेस के बजाय कुछ विशिष्ट तालिकाओं पर मौजूदा एप्लिकेशन पर सीखने के साथ आरंभ करने में आपकी सहायता करनी चाहिए।

एक साइड-नोट के रूप में आपने उल्लेख किया है कि आपके पास लिंक टेबल हैं। यदि आपके पास टेबल में विदेशी कुंजियां हैं जिन्हें आप फ़िल्टर में शामिल नहीं करते हैं, तो --from-डेटाबेस रूपांतरण अभी भी इसके लिए एक संदर्भ बनाएगा। आपको मैन्युअल रूप से बदलना होगा OneToMany, ManyToOne या ManyToMany की संबद्ध मैपिंग के बजाय इसके कच्चे रूप में मानचित्रण।

एनोटेशन मैपिंग doctrine orm:convert:mapping --from-database annotation /path/to/entities से

/**
 * @ORM\Entity
 * @ORM\Table(name="order")
 */
class Order
{
  /** 
   * @var \Customer
   * @ORM\ManyToOne(targetEntity="Customer")
   * @ORM\JoinColumns({
   *   @ORM\JoinColumn(name="customer", referencedColumnName="id", nullable=true)
   * })
   */
   private customer;
}

करने के लिए

/**
 * @ORM\Entity
 * @ORM\Table(name="order")
 */
class Order
{
  /** 
   * @var integer
   * @ORM\Column(name="customer", type="integer", nullable=true)
   */
   private customer;
}

फिर doctrine orm:validate-schema . का उपयोग करना न भूलें यह सुनिश्चित करने के लिए कि मैपिंग सिंक में हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस को पोस्टग्रेज़ से MySQL में माइग्रेट करें

  2. mysql गिनती डुप्लीकेट

  3. शॉपिंग कार्ट और स्टॉक प्रबंधन

  4. मैं अपनी इलास्टिक्स खोज क्वेरी के भीतर MySQL IN क्लॉज कैसे रख सकता हूं?

  5. एक MySQL क्वेरी के साथ सहायता - समूह-वार अधिकतम एक निश्चित कॉलम रखने वाली पंक्तियां