यहाँ से उत्तर के आधार पर:टेबल कैसे सेट करें symfony2 में उपसर्ग
-
अपने बंडल के Resources/config/services.yml खोलें और जोड़ें:
parameters: mybundle.db.sequence_prefix: myprefix_
-
एक नई सेवा जोड़ें:
services: mybundle.sqprefix_subscriber: class: MyBundle\Subscriber\SequencePrefixSubscriber arguments: [%mybundle.db.sequence_prefix%] tags: - { name: doctrine.event_subscriber }
-
MyBundle\Subscriber\SequencePrefixSubscriber.php बनाएं
<?php namespace MyBundle\Subscriber; use Doctrine\ORM\Event\LoadClassMetadataEventArgs; class SequencePrefixSubscriber implements \Doctrine\Common\EventSubscriber { protected $prefix = ''; public function __construct($prefix) { $this->prefix = (string) $prefix; } public function getSubscribedEvents() { return array('loadClassMetadata'); } public function loadClassMetadata(LoadClassMetadataEventArgs $args) { $classMetadata = $args->getClassMetadata(); if ($classMetadata->isInheritanceTypeSingleTable() && !$classMetadata->isRootEntity()) { return; } if ($classMetadata->isIdGeneratorSequence()) { $newDefinition = $classMetadata->sequenceGeneratorDefinition; $newDefinition['sequenceName'] = $this->prefix . $newDefinition['sequenceName']; $classMetadata->setSequenceGeneratorDefinition($newDefinition); $em = $args->getEntityManager(); if (isset($classMetadata->idGenerator)) { $sequenceGenerator = new \Doctrine\ORM\Id\SequenceGenerator( $em->getConfiguration()->getQuoteStrategy()->getSequenceName( $newDefinition, $classMetadata, $em->getConnection()->getDatabasePlatform()), $newDefinition['allocationSize'] ); $classMetadata->setIdGenerator($sequenceGenerator); } } } }
संदर्भ:http://www .doctrine-project.org/api/orm/2.0/class-Doctrine.ORM.Mapping.ClassMetadataInfo.html
दस्तावेज़ कहता है READ-ONLY
sequenceGeneratorDefinition
. के लिए संपत्ति इसलिए मुझे लगता है कि मैन्युअल रूप से मूल्य बदलने की तुलना में सेटर का उपयोग करना क्लीनर है (लेकिन कोई गेटर नहीं है इसलिए हम केवल सार्वजनिक संपत्ति मूल्य का उपयोग करते हैं)।