লারাভেল 5.4 নির্দিষ্ট সারণী স্থানান্তর


89

হাই এখানে অন্তর্ভুক্ত সমস্ত ডকুমেন্টেশন https://laravel.com/docs/5.4/migration এ পড়ুন

কীভাবে কোনও নির্দিষ্ট মাইগ্রেশন ফাইল (কেবল 1 মাইগ্রেশন) স্থানান্তরিত করার উপায় রয়েছে, এখনই প্রতিবার ব্যবহার করুন যখন আমি ব্যবহার করি এমন পরিবর্তন ঘটে php artisan migrate:refreshএবং সমস্ত ক্ষেত্র পুনরায় সেট হয়ে যায়।

উত্তর:


136

প্রথমে migrationআপনার টেবিলের জন্য একটি ফাইল তৈরি করা উচিত :

public function up()
    {
        Schema::create('test', function (Blueprint $table) {
            $table->increments('id');
            $table->string('fname',255);
            $table->string('lname',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }

মাইগ্রেশন ফোল্ডারে টেস্ট ফোল্ডার তৈরি করার পরে সদ্য তৈরি হওয়া মাইগ্রেশন পরীক্ষার ফোল্ডারে সরিয়ে / অনুলিপি করা হয়েছে এবং আপনার টার্মিনাল / সেমিডির মতো কমান্ডের নীচে চালান :

php artisan migrate --path=/database/migrations/test/

4
ধন্যবাদ আমি ঠিক এটিই খুঁজছিলাম।
সাদিক

4
পিএইচপি আর্টিজান মাইগ্রেশন --path = ডাটাবেস / মাইগ্রেশন / পরীক্ষা / আমার জন্য কাজ করেছেন
জোয়েল

এটি যদি কাজ করে না চলে তবে আপনার কাছে স্ট্যাকওভারফ্লো
হরি হারকার

86

এই টেবিলটি রিফ্রেশ করে চালানোর জন্য আপনার মাইগ্রেশন ফাইলের পথটি যুক্ত করা উচিত

php artisan migrate:refresh --path=/database/migrations/fileName.php

4
গুড জব ম্যান। কিছুই কাজ করেনি তবে আপনি সমাধান করেছেন। অনেক ধন্যবাদ.
ভাইপারটেকপ্রো

ঠিক আমি সন্ধান করছিলাম :) ধন্যবাদ সাথী
বিশালপ্রকাশ

কিছু সময় এটি 1 ম ব্যাকস্ল্যাশ ছাড়াই ডাটাবেস / মাইগ্রেশন / ফাইলনেম.এফপি হবে
আহমেদ আবদ

এটি উল্লেখ করা দরকার যে একটি রিফ্রেশ সহ আপনার সমস্ত ডেটা চলে গেছে। আপনার ডিবিতে ডেটা রফতানি হিসাবে সংরক্ষণ করা উচিত এবং আপনার ডেটা রাখতে চাইলে রিফ্রেশের পরে এটিকে আমদানি করা উচিত।
তারানিস

@ তারানিস কেবলমাত্র সেই টেবিলের ডেটা যা আপনি সবাইকে রিফ্রেশ করছেন না
উইসেম এসএসসিআই

55

migrationsআপনার ডাটাবেসে টেবিলটি দেখুন , স্থানান্তর ফাইলের নাম এবং ব্যাচের নম্বর মানের একটি তালিকা থাকবে।

ধরুন আপনার নিম্নলিখিত কাঠামো রয়েছে,

id     migration                                           batch

1      2014_10_12_000000_create_users_table                  1 
2      2014_10_12_100000_create_password_resets_table        1
3      2016_09_07_103432_create_tabel_roles                  1

আপনি যদি কেবল 2016_09_07_103432_create_tabel_rolesমাইগ্রেশন রোলব্যাক করতে চান তবে এর মাইগ্রেশন ব্যাচের মান 2 এ পরিবর্তন করুন যা সবার মধ্যে সর্বোচ্চ এবং তারপরে কেবল নিম্নলিখিতটি কার্যকর করুন।

php artisan migrate:rollback

এখানে ব্যাচের মান 2 সহ কেবল টেবিলটি আবার ঘুরিয়ে দেওয়া হবে। এখন, সেই টেবিলটিতে পরিবর্তন করুন এবং নিম্নলিখিত কনসোল কমান্ডটি চালান।

php artisan migrate

migrationsসারণীতে ব্যাচের মান স্থানান্তরের ক্রম সংজ্ঞায়িত করে। আপনি যখন রোলব্যাক করবেন, সর্বশেষতম বা সর্বাধিক ব্যাচের মান রয়েছে এমন মাইগ্রেশনগুলি প্রথমে এবং তারপরে অন্যদের ঘূর্ণিত হবে। সুতরাং, আপনি ডাটাবেসে মান পরিবর্তন করতে পারেন এবং তারপরে একটি নির্দিষ্ট মাইগ্রেশন ফাইল রোলব্যাক করতে পারেন।

যদিও টেবিল কাঠামোর মধ্যে সম্পর্কের কারণে প্রতিবার ব্যাচের নম্বর পরিবর্তন করা ভাল ধারণা নয় তবে আমরা এই কেসটি এমন কয়েকটি ক্ষেত্রে ব্যবহার করতে পারি যেখানে একক টেবিল রোলব্যাক সারণীর মধ্যে অখণ্ডতা লঙ্ঘন করে না।

আশা করি বুঝতে পেরেছো.


@ মার্টনিআচা আমি খুশি যে আপনার সমস্যার সমাধান পেয়েছেন চিয়ার্স !!
সাগর গৌতম

সুন্দর ব্যাখ্যা। আপনার টেবিলে যদি আপনার কোনও বিদেশী কী সম্পর্ক থাকে, তবে এটি কার্যকর হবে না
ওগবোন্না ভাইটালিস

@ ওগবোনভিতালিস ধন্যবাদ, স্বাধীন টেবিলের জন্য এটি সহজতর উপায় হবে। গৃহীত উত্তরটি একক টেবিল রোলব্যাক এবং স্থানান্তরিত করার সঠিক উপায় দেয়। একাধিক স্বাধীন টেবিলের জন্য এটি কাজ করবে।
সাগর গৌতম

15

আপনি যদি স্ব-সম্পূর্ণর জন্য ট্যাব ব্যবহার করেন

php artisan migrate --path='./database/migrations/2019_12_31_115457_create_coworking_personal_memberships_table.php'


8

আপনাকে ফাইল (গুলি) একটি নতুন ডিরেক্টরিতে স্থাপন করতে হবে (উদা: নির্বাচিত) এবং তারপরে আবেদন করতে হবে

php artisan migrate  --path=/database/migrations/selected

আপনার যদি রোলব্যাকের প্রয়োজন হয়:

php artisan migrate:rollback  --path=/database/migrations/selected

বিঃদ্রঃ:

php artisan migrate:refresh

এটি রোলব্যাক করবে এবং তারপরে ডিফল্ট ডিরেক্টরিতে (/ ডাটাবেস / স্থানান্তর) সমস্ত মাইগ্রেশন ফাইল স্থানান্তর করবে


নতুন ডিরেক্টরি তৈরি করার দরকার নেই আপনি সরাসরি ফাইলের নাম '--path = / ডাটাবেস / মাইগ্রেশন / fileName.php' এর মতো রাখতে পারেন।
উইসেম SASSI

7
php artisan help migrate

আপনি বিকল্পটি দেখতে পাবেন:

--path [= PATH] স্থানান্তরিত ফাইলগুলি কার্যকর করার জন্য পথ

উপায় দ্বারা, আপনি সম্ভবত যে ফাইলটি স্থানান্তর করতে চান তার মূল ফোল্ডারটি নির্দেশ করতে পারেন:

php artisan migrate --path=/database/migrations/sample.php

বা, আপনি মাইগ্রেশনগুলিতে একটি নতুন ফোল্ডার তৈরি করতে পারেন, তারপরে আপনি চান সমস্ত মাইগ্রেশন ফাইলগুলি এর অভ্যন্তরে স্থানান্তর করুন:

php artisan migrate --path=/database/migrations/new_folder

আপনি শুধু একটি 's' মিস করেছেন। এটা 'মাইগ্রেশন' হওয়া উচিত! পিএইচপি কারিগর মাইগ্রেশন --পাথ = / ডাটাবেস / মাইগ্রেশন / নতুন_ফোল্ডার
পাশিন্দু জয়নাথ

পিএইচপি কারিগর মাইগ্রেশন --path = / ডাটাবেস / মাইগ্রেশন / নতুন_ফোল্ডার / সর্বশেষ '/' দরকার
পাসিন্ডু জয়নাথ

5

শুধু একটি অন্য সমাধান পোস্ট করতে চেয়েছিলেন, যা আমি মনে করি উল্লেখযোগ্য।

  1. মাইগ্রেশন সারণীতে আপনার স্থানান্তর নামের সাথে সারি সন্ধান করুন এবং এটি মুছে ফেলুন। এটি দেখতে দেখতে এটির মতো হওয়া উচিত: 2016_06_01_000001_Create_oauth_auth_codes_table
  2. ডাটাবেস থেকে আপনার টেবিলটি সরিয়ে ফেলুন যেমন ড্রপ টেবিল oauth_auth_codes
  3. পিএইচপি কারিগর মাইগ্রেট চালান

এটি কেবলমাত্র আপনার প্রয়োজনীয় টেবিলটি স্থানান্তরিত করবে এবং অন্য কোনও কিছুই স্পর্শ করবে না


4

আপনি যদি একটি এবং নির্দিষ্ট সারণী তৈরি করতে চান। আপনি এই কোড ব্যবহার করতে পারেন। এটি লারাভেল (5.x) সংস্করণগুলির জন্য কাজ করে।

php artisan migrate:refresh --path=/database/migrations/fileName.php

3

আপনি কেবল রোলব্যাক করতে পারেন:

php artisan migrate:rollback

https://laravel.com/docs/5.4/migration#rolling-back-migration

'পদক্ষেপ' বিকল্পটি ব্যবহার করে কতগুলি স্থানান্তর ফিরে যেতে হবে তা আপনি নির্দিষ্ট করতে পারেন:

php artisan migrate:rollback --step=1

কিছু কৌশল এখানে উপলব্ধ:

রোলব্যাক লারাভেলের একটি নির্দিষ্ট স্থানান্তর


3

সারণীটি মুছুন এবং মাইগ্রেশন সারণী থেকে এর রেকর্ডটি সরিয়ে ফেলুন।

এর পরে আপনি আবার মাইগ্রেশন চালাবেন:

php artisan migrate

3

সংশোধন - ডাটাবেসের আগে স্ল্যাশ সরান

$ php artisan migrate --path=database/migrations/migration.php

4
স্থানান্তর করার মতো কিছুই নেই।
zod


2

অথবা আপনি কেবল "মাইগ্রেশন" সারণীতে আপনার ডাটাবেস থেকে মাইগ্রেশন ফাইলের নাম মুছতে পারেন এবং তারপরে চালান: পিএইচপি আর্টসিটান মাইগ্রেশন


1

আপনি যে নির্দিষ্ট সাব-ফোল্ডারটি নির্বাহ করতে চান এবং সেখানে নির্দিষ্ট মাইগ্রেশন স্থাপন করতে চান তা নির্দিষ্ট করতে আপনি --path = বিকল্পটি ব্যবহার করার চেষ্টা করতে পারেন।

বিকল্পভাবে আপনাকে ডিবি এবং মাইগ্রেশন সারণী থেকে রেফারেন্স এবং সারণীগুলি সরিয়ে ফেলতে হবে যা আদর্শ নয়: /


1

আপনি যদি অন্য একটি টেবিল তৈরি করতে চান তবে একটি নতুন স্থানান্তর ফাইল তৈরি করুন। এটা কাজ করবে।

আপনি যদি নামের users_tableসাথে একটি মাইগ্রেশন তৈরি করেন id, first_name, last_name। আপনি মত একটি মাইগ্রেশন ফাইল তৈরি করতে পারেন

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_name',255);
            $table->string('last_name',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }
    public function down()
    {
        Schema::dropIfExists('users');
    }

মাইগ্রেট না করে যদি আপনি "স্ট্যাটাস" এর মতো অন্য একটি দায়ের করা যুক্ত করতে চান: রিফ্রেশ করুন। আপনি "অ্যাড_স্ট্যাটাস_ফিল্ড_ টু ইউজারস_ট্যাবল" এর মতো আরেকটি মাইগ্রেশন ফাইল তৈরি করতে পারেন

public function up()
{
    Schema::table('users', function($table) {
        $table->integer('status');
    });
} 

এবং রোলব্যাক বিকল্প যুক্ত করতে ভুলবেন না:

public function down()
{
    Schema::table('users', function($table) {
        $table->dropColumn('status');
    });
}

এবং আপনি যখন মাইগ্রেট চালাবেন তখন php artitsan migrationএটি নতুন মাইগ্রেশন ফাইলটি সরিয়ে ফেলবে।

তবে আপনি যদি প্রথম এমজিগ্রেশন ফাইলে (ব্যবহারকারীদের_ টেবিল) ফাইল "স্ট্যাটাস" যুক্ত করেন এবং মাইগ্রেশন চালান। এটি হিজরত করার কিছুই নয়। আপনি চালাতে প্রয়োজন php artisan migrate:refresh

এই সাহায্য আশা করি।



1

পিএইচপি কারিগর মাইগ্রেশন --path = / ডাটাবেস / মাইগ্রেশন / fileName.php

এই কমেন্ট ফাইলের নাম কার্যকর করার নির্দেশটি অনুসরণ করুন এখানে আপনার মাইগ্রেশন সারণীর নাম হওয়া উচিত উদাহরণ: পিএইচপি কারিগর মাইগ্রেট --path = / ডাটাবেস / মাইগ্রেশন / 2020_02_21_101937_create_jobs_table.php


1

আপনি কেবল আপনার টার্মিনালে এই কমান্ডটি চালাতে পারেন

php artisan migrate --path=database/migrations/2020_10_01_164611_create_asset_info_table.php

মাইগ্রেশন পরে আপনার নির্দিষ্ট ফাইলের নাম রাখা উচিত। বা মাইগ্রেশনের ভিতরে যদি আপনার কোনও ফোল্ডার থাকে তবে মাইগ্রেশনের পরে সেই ফোল্ডারের নামটি যুক্ত করুন।

এটার মত

php artisan migrate --path=database/migrations/yourfolder/2020_10_01_164611_create_asset_info_table.php

আমি আশা করি এটি আপনাকে একটুখানি সহায়তা করবে। শুভ কোডিং।



-1

প্রথমে আপনাকে নিম্নলিখিত কমান্ডগুলি করা উচিত:

ধাপ 1:

php artisan migrate:rollback

ধাপ ২:

php artisan migrate

আপনার টেবিলটি ডাটাবেসে ফিরে আসবে।


আপনি প্রতিটি পদক্ষেপে ছোট বিবরণ রাখলে এটি আরও সহায়ক হবে। এটি ব্যবহারকারীর আসলে কী ঘটছে তা বুঝতে সহায়তা করবে। এটি একটি প্রতারণা-কোডের মতো দেখায় যা ম্যাজিকালি জিনিসগুলিকে কাজ করে তোলে তবে ফলাফলটি কিছু ক্ষেত্রে বিপর্যয়কর হতে পারে।
আশ্বানি আগরওয়াল

দয়া করে প্রশ্নটি মনোযোগ সহকারে পড়ুন, ব্যক্তিটি কেবল একটি টেবিল চেয়েছিল, আপনার পদ্ধতিটি সমস্ত স্থানান্তরকে রোলব্যাক করবে এবং তারপরে সমস্ত টেবিল তৈরি করবে। এছাড়াও php artisan migration:refreshএকই কাজ করে।
ওয়াজাহাট হাশমি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.