بخش اول - تعریف و اجرای Migrationها
برای ساخت یک جدول ساده با استفاده از مایگریشن در لاراول، میتوانید مراحل زیر را انجام دهید:
ابتدا یک فایل مایگریشن جدید با دستور زیر ایجاد میکنیم:
php artisan make:migration create_posts_table --create=posts
این دستور یک فایل مایگریشن جدید به نام create_posts_table در پوشه database/migrations ایجاد میکند.
حالا میتوانید به فایل ایجاد شده مراجعه کنید و متد up() را ویرایش کنید تا جدول posts ساخته شود. به عنوان مثال:
return new class extends Migration
{
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content')->nullable();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('posts');
}
}
مایگریشن بالا یک جدول با نام posts ایجاد میکند و 5 فیلد مشخص شده در متد up را در آن ایجاد میکند.
در نهایت، برای اجرای مایگریشن و ایجاد جدول در پایگاه داده، دستور زیر را اجرا کنید:
php artisan migrate
در ادامه متد های قابل استفاده برای ساخت جدول توضیح داده می شود.
در این قسمت با یک فساد جدید به نام Schema آشنا می شویم، این فساد برای تعریف، ایجاد، تغییر و حذف جداول و ستونهای پایگاه داده در مایگریشنها بهکار میرود.
1- متد create
این متد برای ایجاد یک جدول جدید استفاده میشود. درون این متد، میتوان با استفاده از کلاس Blueprint ستونها و ویژگیهای جدول را تعریف کرد.
Schema::create('posts', function (Blueprint $table) {
//
});2- متد table
این متد مشابه create اما برای تغییر ساختار یک جدول موجود استفاده میشود. میتوانید ستونها را اضافه، تغییر یا حذف کنید.
3- متد hasTable
این متد بررسی میکند که آیا جدول مشخصی در پایگاه داده وجود دارد یا خیر.
if (Schema::hasTable('posts')) {
//
}4- متد hasColumn
این متد بررسی میکند که آیا ستون خاصی در یک جدول مشخص وجود دارد یا خیر.
if (Schema::hasColumn('posts', 'title')) {
//
}5- متد hasIndex
این متد بررسی میکند که آیا یک ایندکس (کلید یا شاخص) خاص در جدول موردنظر وجود دارد یا خیر. توجه داشته باشید که این متد ممکن است به همراه برخی نسخههای دیتابیسها یا پلهای خاص لاراول بیشتر کاربرد داشته باشد.
if (Schema::hasIndex('posts', 'posts_title_index')) {
//
}6- متد connection
این متد برای انجام عملیات Schema بر روی یک اتصال خاص پایگاه داده استفاده میشود. به شما اجازه میدهد با دیتابیسهای مختلفی کار کنید.
Schema::connection('sqlite')->create('products', function (Blueprint $table) {
//
});7- متد rename
این متد نام یک جدول را تغییر میدهد.
Schema::rename('old_posts', 'new_posts');8- متد drop
این متد برای حذف کامل یک جدول استفاده میشود.
Schema::drop('posts');9- متد dropIfExists
این متد جدول را تنها در صورتی که وجود داشته باشد، حذف میکند. این رویکرد از بروز خطا در صورت عدم وجود جدول جلوگیری میکند.
10- متد enableForeignKeyConstraints
این متد، محدودیتهای کلید خارجی را در پایگاه داده فعال میکند. این متد معمولاً در سیستمهای مدیریت پایگاه داده مانند MySQL و SQLite مفید است.
Schema::enableForeignKeyConstraints();
11- متد disableForeignKeyConstraints
این متد، محدودیتهای کلید خارجی را در پایگاه داده غیرفعال میکند. غیرفعال کردن محدودیتها میتواند برای حذف جداول یا تغییر ساختار آنها (مانند حذف یا اضافه کردن ستونهای مرتبط) که ممکن است در حالت عادی باعث خطا شود، مفید باشد.
12- متد withoutForeignKeyConstraints
این متد یک Closure را اجرا میکند که در حین اجرای آن، محدودیتهای کلید خارجی به طور موقت غیرفعال میشوند. پس از پایان اجرای Closure، محدودیتها بهطور خودکار به حالت اولیه بازمیگردند.
Schema::withoutForeignKeyConstraints(function () {
Schema::dropIfExists('posts');
});در قسمت ها بعدی با متد کلاس Blueprint برای کار با column ها می پردازیم.
▫️ 🟠
🔎 #laravel #لاراول #فصل_۵
💠 @AmirhDeveloper
.