खोज…


माइग्रेशन

लारवेल में अपने डेटाबेस को नियंत्रित करने के लिए माइग्रेशन का उपयोग करना है। कारीगर के साथ प्रवास बनाएँ:

php artisan make:migration create_first_table --create=first_table

यह क्लास CreateFirstTable उत्पन्न करेगा। अप विधि के अंदर आप अपने कॉलम बना सकते हैं:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateFirstTable extends Migration
{
    public function up()
    {
        Schema::create('first_table', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_string_column_name');
            $table->integer('secont_integer_column_name');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::drop('first_table');
    }
} 

अपने सभी माइग्रेशन वर्गों को चलाने के लिए अंत में आप कारीगर कमांड चला सकते हैं:

php artisan migrate

यह आपके डेटाबेस में आपके टेबल और आपके कॉलम बनाएगा। अन्य उपयोगी माइग्रेट कमांड हैं:

  • php artisan migrate:rollback - अंतिम डेटाबेस माइग्रेशन को रोलबैक करें
  • php artisan migrate:reset - रोलबैक सभी डेटाबेस माइग्रेशन
  • php artisan migrate:refresh - रीसेट करें और सभी माइग्रेशन फिर से चलाएँ
  • php artisan migrate:status - प्रत्येक प्रवास की स्थिति दिखाएँ

मौजूदा तालिकाओं को संशोधित करना

कभी-कभी, आपको स्तंभों का renaming/deleting जैसी अपनी मौजूदा तालिका संरचना को renaming/deleting । जिसे आप एक नया माइग्रेशन बनाकर पूरा कर सकते हैं। और अपने माइग्रेशन के up मेथड में।

//Renaming Column.

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->renameColumn('email', 'username');
    });
}

उपर्युक्त उदाहरण से users table का username email column users table नाम बदल जाएगा। जबकि नीचे का कोड users तालिका से एक कॉलम username छोड़ता है।

Improtant: कॉलम को संशोधित करने के लिए आप जोड़ने की जरूरत doctrine/dbal परियोजना के लिए निर्भरता composer.json फ़ाइल और रन composer update बदलाव को प्रतिबिंबित करने के लिए।

//Droping Column
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('username');
    });
}

माइग्रेशन फ़ाइलें

एक Laravel 5 अनुप्रयोग में database/migrations निर्देशिका में रहते हैं। उनके फ़ाइलनाम एक विशेष प्रारूप के अनुरूप हैं:

<year>_<month>_<day>_<hour><minute><second>_<name>.php

एक माइग्रेशन फ़ाइल को किसी विशेष समस्या को हल करने के लिए एक स्कीमा अद्यतन का प्रतिनिधित्व करना चाहिए। उदाहरण के लिए:

2016_07_21_134310_add_last_logged_in_to_users_table.php

डेटाबेस माइग्रेशन को कालानुक्रमिक क्रम में रखा जाता है ताकि लारवेल को पता चले कि उन्हें किस क्रम में निष्पादित करना है। लारवेल हमेशा सबसे पुराने से लेकर सबसे नए तक के पलायन को अंजाम देंगे।

माइग्रेशन फ़ाइलें जनरेट कर रहा है

हर बार सही फ़ाइलनाम के साथ एक नई माइग्रेशन फ़ाइल बनाना, जब आपको अपना स्कीमा बदलने की आवश्यकता होती है, तो आप एक काम करेंगे। शुक्र है, लारवेल की artisan कमान आपके लिए प्रवासन उत्पन्न कर सकती है:

php artisan make:migration add_last_logged_in_to_users_table

आप उपरोक्त कमांड के साथ --table और --create झंडे का भी उपयोग कर सकते हैं। ये वैकल्पिक और बस सुविधा के लिए हैं, और संबंधित बॉयलरप्लेट कोड को माइग्रेशन फ़ाइल में सम्मिलित करेंगे।

php artisan make:migration add_last_logged_in_to_users_table --table=users

php artisan make:migration create_logs_table --create=logs

आप --path विकल्प का उपयोग करके उत्पन्न माइग्रेशन के लिए एक कस्टम आउटपुट पथ निर्दिष्ट कर सकते हैं। पथ अनुप्रयोग के आधार पथ के सापेक्ष है।

php artisan make:migration --path=app/Modules/User/Migrations

एक डेटाबेस माइग्रेशन के अंदर

प्रत्येक माइग्रेशन में एक up() विधि और एक down() विधि होनी चाहिए। up() विधि का उद्देश्य डेटाबेस स्कीमा को अपनी नई स्थिति में लाने के लिए आवश्यक संचालन करना है, और down() विधि का उद्देश्य up() विधि द्वारा किए गए किसी भी संचालन को उल्टा करना है। यह सुनिश्चित करना कि down() विधि सही ढंग से आपके ऑपरेशन को उलट देती है, डेटाबेस स्कीमा परिवर्तन रोलबैक करने में सक्षम होने के लिए महत्वपूर्ण है।

एक उदाहरण माइग्रेशन फ़ाइल इस तरह दिख सकती है:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddLastLoggedInToUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dateTime('last_logged_in')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('last_logged_in');
        });
    }
}

इस माइग्रेशन को चलाने के दौरान, Laravel आपके डेटाबेस के विरुद्ध चलने के लिए निम्न SQL उत्पन्न करेगा:

ALTER TABLE `users` ADD `last_logged_in` DATETIME NULL

पलायन चल रहा है

एक बार जब आपका माइग्रेशन लिखा जाता है, तो इसे चलाने से आपके डेटाबेस पर परिचालन लागू होगा।

php artisan migrate

यदि सब ठीक रहा, तो आपको नीचे जैसा ही आउटपुट दिखाई देगा:

Migrated: 2016_07_21_134310_add_last_logged_in_to_users_table

जब आप उत्पादन वातावरण में माइग्रेशन चला रहे हों, तो लारवेल यह जानने में काफी चतुर है। यदि यह पता लगाता है कि आप एक विनाशकारी प्रवासन कर रहे हैं (उदाहरण के लिए, वह जो किसी तालिका से स्तंभ हटाता है), तो php artisan migrate कमांड आपसे पुष्टिकरण मांगेगा। लगातार वितरण वातावरण में यह नहीं चाहते हो सकता है। उस स्थिति में, पुष्टि को छोड़ने के लिए --force ध्वज का उपयोग करें:

php artisan migrate --force

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

जब तक आप पूरी तरह से नहीं जानते कि आप क्या कर रहे हैं, आपको मैन्युअल रूप से migrations टेबल को कभी भी संपादित नहीं करना चाहिए। अनजाने में अपने डेटाबेस को एक टूटी हुई स्थिति में छोड़ना बहुत आसान है जहां आपके माइग्रेशन विफल हो जाएंगे।

रोलिंग बैक माइग्रेशन

क्या हो अगर आप लेटेस्ट माइग्रेशन यानी हालिया ऑपरेशन को रोलबैक करना चाहते हैं, तो आप कमाल का rollback कमांड इस्तेमाल कर सकते हैं। लेकिन याद रखें कि यह कमांड केवल अंतिम माइग्रेशन को ही रोल करता है, जिसमें कई माइग्रेशन फाइलें शामिल हो सकती हैं

php artisan migrate:rollback

यदि आप अपने सभी एप्लिकेशन माइग्रेशन को वापस करने में रुचि रखते हैं, तो आप निम्नलिखित कमांड का उपयोग कर सकते हैं

php artisan migrate:reset 

इसके अलावा यदि आप मेरी तरह आलसी हैं और एक कमांड के साथ रोलबैक और माइग्रेट करना चाहते हैं, तो आप इस कमांड का उपयोग कर सकते हैं

php artisan migrate:refresh
php artisan migrate:refresh --seed

आप step विकल्प के साथ रोलबैक करने के लिए चरणों की संख्या भी निर्दिष्ट कर सकते हैं। जैसे यह 1 स्टेपबैक करेगा।

php artisan migrate:rollback --step=1


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow