कहें, मेरे पास एकल तालिका अपडेट करने वाली एकाधिक माइग्रेशन फ़ाइलें हैं।लार्वा माइग्रेट - एक से अधिक माइग्रेशन (फाइलें)
उदा।
2016_03_20_072730_create_tasks_table.php 2016_03_20_075467_create_tasks_table.php
... जो विभिन्न टीम सदस्यों द्वारा रेपो से आया था। प्रत्येक तालिका में कुछ समायोजित कर रहा है, उदा। एक कॉलम जोड़ना
मैं करने का प्रयास करते:
php artisan migrate
मैं त्रुटि:
PHP Fatal error: Cannot declare class CreateTasksTable, because the name is eady in use in U:\www\b10\database\migrations\2016_03_20_072737_create_tasks_ le.php on line 30 [Symfony\Component\Debug\Exception\FatalErrorException] Cannot declare class CreateTasksTable, because the name is already in use
कैसे ऊपर वर्णित के रूप में स्थिति के साथ एक सौदा करना चाहिए?
2016_03_20_072730_create_tasks_table.php:
class CreateTasksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('tasks', function ($table) { $table->string('task1'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('tasks'); } }
2016_03_20_075467_create_tasks_table.php:
class CreateTasksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('tasks', function ($table) { $table->string('task2'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('tasks'); } }
हां, मैं त्रुटि से एक ही निष्कर्ष पर आया, लेकिन माइग्रेट हाथ से डीबी करने से इतना बड़ा माना जाता था। माना जाता है कि आपको केवल नवीनतम रेपो मिलना चाहिए, माइग्रेट चलाएं और एक बियर लें। लेकिन इसके साथ, ऐसा लगता है कि हाथ से अद्यतन "कटा हुआ रोटी के बाद से सुपर-बेस्ट चीज" के पीछे नहीं हैं;) अब, आपको माइग्रेट फ़ाइल को समायोजित करना होगा, माइग्रेट फाइलों को गठबंधन करना होगा, या प्रत्येक को अस्थायी रूप से ले जाना होगा और उपयोग करना होगा - -पथ, आदि। तो, मुझे लगता है कि यह एक नींबू है। लोटसा बात, थोड़ा संभाल। जब तक कोई आसान तरीका न हो - इसलिए मेरा प्रश्न। – Jeffz
यह आसान है - आपको बस अपने माइग्रेशन को तार्किक रूप से नाम देना होगा। आपको डेटाबेस में कुछ भी करने की ज़रूरत नहीं है। आइए इसे इस तरह से रखें: मॉडलों के साथ काम करना वाकई आसान है। लेकिन यदि आप दो मॉडलों को एक ही चीज़ का नाम देने का प्रयास करते हैं, तो यह काम नहीं करेगा। क्या आप तर्क देंगे कि मॉडलों के साथ काम करने में भी मुश्किल होती है? :) बस अपने टीम के सदस्यों को अलग-अलग माइग्रेशन के लिए अलग-अलग नाम देने के लिए सिखाएं और यह सचमुच आपको जो भी चाहिए वह सब कुछ है। –
माइग्रेशन फ़ाइलों को लार्वेल द्वारा स्वतः बनाया गया है। चूंकि एक सृजन शॉर्टकट है, क्या लैरवेल के लिए क्लास नाम में कुछ यादृच्छिक स्ट्रिंग/हैश जोड़ना बहुत कठिन होगा? जब तक कि इस प्रक्रिया के खिलाफ चीखने वाली कोई चीज न हो। आपके समय के लिए जोएल धन्यवाद। – Jeffz