उन लोगों के लिए एक और विकल्प यदि आपको एक ही माइग्रेशन (ओं) के साथ कई बार ऐसा करने की आवश्यकता है। व्यक्तिगत रूप से मुझे लगता है कि यह आपके माइग्रेशन में बहुत अधिक लचीलापन जोड़ता है।
database/migrationsअपने ऑटोलैड ऑब्जेक्ट को composer.jsonइस तरह से जोड़ें :
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories",
"database/support",
"database/migrations"
]
},
फिर namespace Database\Migrations;अपनी सभी माइग्रेशन फ़ाइलों में जोड़ें।
फिर $ composer dump-autoloadअपनी composer.lockफ़ाइल को ताज़ा करने के लिए चलाएँ ।
फिर, माइग्रेशन के लिए अपने वर्ग का नाम मानते हुए AlterTableWebDirectories, आप इस तरह से एक कमांड बना सकते हैं:
$ php artisan make:command DropAlterTableWebDirectories
और इस तर्क को अपनी handle()विधि में लिखें :
public function handle {
(new AlterTableWebDirectories)->down();
DB::raw("delete from migrations where migration like '%alter_table_web_directories%'");
}
यह वही करेगा जो आप चाहते हैं। यदि आप इसे हटाने के बजाय माइग्रेशन गणना को कम करना चाहते हैं, तो आप संभवतः यह पता लगा सकते हैं कि DB:rawकमांड को कैसे बदलना है ।
यह कमांड आपको डायनामिक रूप से यह चुनने के लिए दिया जा सकता है कि कमांड में एक तर्क पास करके आप कौन से माइग्रेशन को छोड़ रहे हैं।
फिर जब आप उस फ़ाइल को फिर से माइग्रेट करने के लिए पढ़ रहे हैं, तो आप बस चला सकते हैं php artisan migrateऔर यह केवल उस एक को माइग्रेट करेगा।
यह प्रक्रिया आपको हर बार पूर्ण रिफ्रेश और सीड करने के बिना माइग्रेशन में विशिष्ट बदलाव करने की अनुमति देती है।
व्यक्तिगत रूप से मुझे ऐसा करने की आवश्यकता है क्योंकि मेरे बीज बड़े हैं।