اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

عند تنفيذ أمر تهجير البيانات

php artisan migrate 

نقوم بإضافة الأمر التالي إليها:

--pretend

وهذا المسؤول عن طباعة أوامر SQL في terminal التي تم تنفيذها لتهجير البيانات إلى قاعدة البيانات

فيصبح الأمر هكذا:

php artisan migrate --pretend

والنتيجة تظهر في terminal:

Migration table created successfully.
CreateUsersTable: create table "users" …
CreateUsersTable: create unique index …
CreatePasswordResetsTable: create table "password_resets" …
CreatePasswordResetsTable: create index password_resets_email_index  …
CreatePasswordResetsTable: create index password_resets_token_index …

ولحفظ النتيجة في ملف migrate.sql نقوم بتوجيه المخرجات من terminal إلى الملف المحدد بإضافة الأمر:

> migrate.sql

ولكن يتم حفظ المخرجات SQL مع زوائد إضافية مثل ("CreateUsersTable: " و "CreatePasswordResetsTable: ") كما ظهرت في Terminal

ولفلترة النتائج من هذه الزوائد نقوم باستدعاء الأمر:

--no-ansi

المسؤول عن عدم طباعة هذه الزوائد عن أوامر SQL

بذلك يكون لدينا المخرجات عبارة عن أوامر SQL فقط ويتم حفظها في ملف migrate.sql من خلال الأمر:

php artisan migrate --pretend --no-ansi > migrate.sql

 

  • 0
نشر
بتاريخ 6 ساعات قال Alfakiat:

عند تنفيذ أمر تهجير البيانات


php artisan migrate 

نقوم بإضافة الأمر التالي إليها:


--pretend

وهذا المسؤول عن طباعة أوامر SQL في terminal التي تم تنفيذها لتهجير البيانات إلى قاعدة البيانات

فيصبح الأمر هكذا:


php artisan migrate --pretend

والنتيجة تظهر في terminal:


Migration table created successfully.
CreateUsersTable: create table "users" …
CreateUsersTable: create unique index …
CreatePasswordResetsTable: create table "password_resets" …
CreatePasswordResetsTable: create index password_resets_email_index  …
CreatePasswordResetsTable: create index password_resets_token_index …

ولحفظ النتيجة في ملف migrate.sql نقوم بتوجيه المخرجات من terminal إلى الملف المحدد بإضافة الأمر:


> migrate.sql

ولكن يتم حفظ المخرجات SQL مع زوائد إضافية مثل ("CreateUsersTable: " و "CreatePasswordResetsTable: ") كما ظهرت في Terminal

ولفلترة النتائج من هذه الزوائد نقوم باستدعاء الأمر:


--no-ansi

المسؤول عن عدم طباعة هذه الزوائد عن أوامر SQL

بذلك يكون لدينا المخرجات عبارة عن أوامر SQL فقط ويتم حفظها في ملف migrate.sql من خلال الأمر:


php artisan migrate --pretend --no-ansi > migrate.sql

 

بالإضافة إلى ما ذكر من قبل المدرب @Alfakiat , و لمزيد من التخصيص في كيفية الحصول على الاستعلامات , ضع في اعتبارك اختراق المصدر وإنشاء الأمر المخصص الخاص بك, إليك بعض التعليمات البرمجية السريعة للحصول على جميع عمليات الترحيل 

$migrator = app('migrator');
$db = $migrator->resolveConnection(null);
$migrations = $migrator->getMigrationFiles('database/migrations');
$queries = [];

foreach($migrations as $migration) {
    $migration_name = $migration;
    $migration = $migrator->resolve($migration);

    $queries[] = [
        'name' => $migration_name,
        'queries' => array_column($db->pretend(function() use ($migration) { $migration->up(); }), 'query'),
    ];
}

dd($queries);

والنتيجة تكون 

array:2 [
  0 => array:2 [
    "name" => "2014_10_12_000000_create_users_table"
    "queries" => array:2 [
      0 => "create table "users" ("id" integer not null primary key autoincrement, "name" varchar not null, "email" varchar not null, "password" varchar not null, "remember_token" varchar null, "created_at" datetime not null, "updated_at" datetime not null)"
      1 => "create unique index users_email_unique on "users" ("email")"
    ]
  ]
  1 => array:2 [
    "name" => "2014_10_12_100000_create_password_resets_table"
    "queries" => array:3 [
      0 => "create table "password_resets" ("email" varchar not null, "token" varchar not null, "created_at" datetime not null)"
      1 => "create index password_resets_email_index on "password_resets" ("email")"
      2 => "create index password_resets_token_index on "password_resets" ("token")"
    ]
  ]
]

سيشمل هذا الكود على جميع عمليات الترحيل, لمعرفة كيفية الحصول على ما لم يتم ترحيله بالفعل , ألق نظرة على دالة run في المسار التالي 

vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...