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

الحصول على أوامر SQL عند تهجير البيانات في Laravel

Mohammad Yousef3

السؤال

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...