2016-04-19 6 views
15

मेरे पास एक मौजूदा डेटाबेस तालिका है और मैं उस पर कॉलम जोड़ना चाहता हूं। हालांकि, जैसा कि मैं php artisan migrate कमांड चलाता हूं, यह माइग्रेट करने के लिए कुछ भी नहीं कहता है। लेकिन मैं टेबल कॉलम जोड़ने के लिए पहले ही स्कीमा जोड़ता हूं। मैंने कुछ लेख और लिंक पढ़े हैं जिन्हें मुझे नए कॉलम जोड़े जाने से पहले php artisan migrate:refresh चलाया जाना चाहिए। समस्या यह है कि यह मेरी तालिका में मेरे मौजूदा डेटा को मिटा देगा। क्या कोई तरीका है कि मैं माइग्रेशन कर सकता हूं और अपना डेटा हटाने के बिना सफलतापूर्वक अपनी तालिका में कॉलम जोड़ सकता हूं? इसमें मेरी मदद करो। बहुत बहुत धन्यवाद। मेरा माइग्रेशन कोड यहां है।अपने डेटा खोए बिना लार्वेल 5 माइग्रेशन का उपयोग करके तालिका में कॉलम कैसे जोड़ें?

public function up() 
{ 
    // 
    Schema::create('purchase_orders', function(Blueprint $table){ 

     $table->increments('id'); 
     $table->string('po_code'); 
     $table->text('purchase_orders'); 
     $table->float('freight_charge'); 
     $table->float('overall_total'); 
     $table->timestamps(); 

    }); 

    Schema::table('purchase_orders', function(Blueprint $table){ 
     $table->string('shipped_via'); 
     $table->string('terms'); 
    }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    // 
    Schema::drop('purchase_orders'); 
} 

मैं अपने purchase_orders तालिका में कॉलम shipped_via और terms जोड़ना चाहते हैं।

उत्तर

28

उपयोग

php artisan make:migration add_shipped_via_and_terms_colums_to_purchase_orders_table --table=purchase_orders 

उपयोग --create

अब एक नई माइग्रेशन फ़ाइल बनाई जाएगी। इस फ़ाइल में up() समारोह के अंदर इन लाइन

Schema::table('purchase_orders', function(Blueprint $table){ 
    $table->string('shipped_via'); 
    $table->string('terms'); 
}); 

जोड़ने और फिर चलाने php artisan migrate

3

लैरवेल आपके डेटाबेस में एक टेबल है जहां यह पहले से निष्पादित सभी माइग्रेशन का ट्रैक रखता है। तो केवल माइग्रेशन फ़ाइल बदलकर Laravel स्वचालित रूप से आपके लिए उस माइग्रेशन को फिर से नहीं चलाएगा। क्योंकि माइग्रेशन पहले से ही लार्वेल द्वारा निष्पादित किया गया है।

तो सबसे अच्छी बात यह है कि केवल एक नया माइग्रेशन बनाना और उस कोड का टुकड़ा डालें जो आपके पास पहले से है (आप सही रास्ते पर थे!)।

public function up() 
{ 
    // 
    Schema::table('purchase_orders', function(Blueprint $table){ 
     $table->string('shipped_via'); 
     $table->string('terms'); 
    }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    // 

} 

आपको नीचे दिए गए फ़ंक्शन केस को पॉप्युलेट करने की आवश्यकता नहीं है, तालिका को आपके वर्तमान खरीद_ऑर्डर माइग्रेशन द्वारा छोड़ा जाएगा।

माइग्रेट करने के लिए नया माइग्रेशन बस चलाने: मौजूदा तालिका संशोधित करने के लिए नई तालिका और --table बनाने के लिए मौजूदा तालिका संशोधित करने के लिए

आदेश नीचे
php artisan migrate 
+1

वास्तव में समझ में नहीं आता था खाली 'नीचे()' सा। क्या 's()' और 'डाउन()' दोनों को 'डाउन() 'रिवर्स के साथ रखने का सबसे अच्छा अभ्यास नहीं है? तो इस मामले में: '$ table-> ड्रॉप कॉलम ('shipped_via');' और '$ table-> ड्रॉप कॉलम ('शर्तें');' – kiradotee

+0

आह, ओपी के संदेश को दोबारा पढ़ें, वह एक नई टेबल बना रहा है। समझ गया। – kiradotee

संबंधित मुद्दे