TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #343 292
فصل پنج - Migrations and Database

بخش اول - تعریف
و اجرای Migrationها

کلاس Blueprint در لاراول به عنوان ابزاری در مایگریشن‌ها استفاده می‌شود که امکان تعریف، تغییر و حذف ستون‌ها و ویژگی‌های جداول پایگاه داده را فراهم می‌کند. این کلاس همراه با متدهای Schema به کار می‌رود و مجموعه‌ای از متدها را برای مدیریت ستون‌ها و ایندکس‌ها ارائه می‌دهد.

مثال:
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
});


در این مثال، کلاس Blueprint برای تعریف ساختار جدول users استفاده شده است. این جدول دارای سه ستون اصلی است.

از این قسمت به بررسی و توضیح متد های مدیریت جداول می پردازیم.

1- متد bigIncrements
این متد یک ستون کلید اصلی با نوع داده BIGINT ایجاد می‌کند که مقدار آن به صورت AUTO_INCREMENT خواهد بود.
$table->bigIncrements('id');


2- متد bigInteger
این متد یک ستون عدد صحیح بزرگ (BIGINT) ایجاد می‌کند که می‌تواند برای ذخیره اعداد بزرگ استفاده شود.
$table->bigInteger('views');


3- متد binary
این متد یک ستون با نوع داده باینری برای ذخیره داده‌های خام (مانند فایل‌ها) ایجاد می‌کند.
$table->binary('file_data', length: 16, fixed: true);


4- متد boolean
این متد یک ستون Boolean ایجاد می‌کند که برای ذخیره مقادیر منطقی استفاده می‌شود.
$table->boolean('is_active');


5- متد char
این متد یک ستون متنی با طول ثابت ایجاد می‌کند.
$table->char('code', length: 10);


6- متد dateTimeTz
این متد یک ستون تاریخ و زمان با پشتیبانی از منطقه زمانی (timezone) ایجاد می‌کند.
$table->dateTimeTz('start_time', precision: 0);


7- متد dateTime
این متد یک ستون تاریخ و زمان بدون منطقه زمانی ایجاد می‌کند.
$table->dateTime('created_at', precision: 0);


8- متد date
این متد یک ستون برای ذخیره تنها تاریخ (بدون زمان) ایجاد می‌کند.
$table->date('birth_date');


9- متد decimal
این متد یک ستون عددی دقیق با نقطه اعشار ایجاد می‌کند.
$table->decimal('price', total: 10, places: 2);

در این مثال، ستون price برای ذخیره اعداد با حداکثر 10 رقم و 2 رقم اعشار ایجاد می‌شود.

10- متد double
این متد یک ستون عددی با دقت شناور (دقت کمتر از decimal) ایجاد می‌کند.
$table->double('rating');


11- متد enum
این متد یک ستون از نوع ENUM ایجاد می‌کند که مقادیر آن باید از مجموعه‌ای از مقادیر از پیش تعریف‌شده باشد.
$table->enum('status', ['pending', 'approved', 'rejected']);


12- متد float
ایجاد ستون عددی شناور (مانند double) که برای اعداد تقریبی مناسب است.

$table->float('amount', precision: 53);


13- متد foreignId
ایجاد ستون عددی برای استفاده به عنوان کلید خارجی، معمولاً با نام id جدول مرجع.
$table->foreignId('user_id');


14- متد foreignIdFor
ایجاد ستون کلید خارجی و مشخص کردن کلاس مدل مرجع.
$table->foreignIdFor(User::class);


15- متد foreignUlid
ایجاد کلید خارجی با نوع ULID.
$table->foreignUlid('user_id');


16- متد foreignUuid
ایجاد کلید خارجی از نوع UUID.
$table->foreignUuid('user_id');


17- متد geography
ایجاد ستون جغرافیایی برای ذخیره داده‌های مکانی (مانند طول و عرض جغرافیایی).
$table->geography('coordinates', subtype: 'point', srid: 4326);


18- متد geometry
ایجاد ستون هندسی برای ذخیره داده‌های مکانی.
$table->geometry('positions', subtype: 'point', srid: 0);


19- متد id
ایجاد ستون کلید اصلی به صورت خودکار.
$table->id();


20- متد increments
ایجاد کلید اصلی AUTO_INCREMENT از نوع INT.
$table->increments('id');


21- متد integer
ایجاد ستون عدد صحیح.
$table->integer('votes');


22- متد ipAddress
ایجاد ستونی برای ذخیره آدرس IP.
$table->ipAddress('visitor');


23- متد json
ایجاد ستون برای ذخیره داده‌های JSON.
$table->json('options');


24- متد jsonb
مشابه json، اما برای دیتابیس‌های پشتیبانی‌کننده از نوع JSONB (مانند PostgreSQL) استفاده می‌شود.
$table->jsonb('options');


25- متد longText
ایجاد ستون متنی طولانی.
$table->longText('description');


#laravel #لاراول #فصل_۵
@AmirhDeveloper
.
More from @amirhdeveloper
  1. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  2. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  3. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  4. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  5. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
  6. Sep 19, 2026خیلی وقته پست‌های کانال فقط درمورد LaraGram بوده، وقتشه یکم جالب‌ترش کنیم اگر ممبرها هنوز…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →