- جمعه 11 آبان 1397 ساعت 21:10
- 3.1.9
- در حال تکمیل
- فعال
مایگریشنها، روشی مناسب برای اصلاح دیتابیس، به سبکی ساختار یافته و سازمان یافته هستند. میتوانید بخشهای مختلف SQL را به صورت دستی ویرایش کنید، اما مسئولیت اینکه به سایر دولوپرها بگویید که آن بخش را به همان شکل ویرایش کنند، با شما خواهد بود. همچنین، باید پیگیری کنید که چه تغییراتی نیاز است تا در زمان دپلوی بعدی بر روی سرور اجرا شود.
تیبل migration پیگیری میکند که چه مایگریشنهایی قبلا اجرا شدهاند، بنابراین، تمام کاری که باید انجام دهد، این است که فایلهای اپلیکیشن خود را آپدیت کنید و $this->migration->current()
را فراخوانی کنید تا متوجه شوید که کدام مایگریشنها باید اجرا شوند. ورژن فعلی در فایل application/config/migration.php قرار دارد.
نام فایلهای مایگریشن
هر مایگریشن بسته به متدی که آن را اجرا میکند، با ترتیب عددی به عقب یا جلو اجرا میشود.
- متوالی: مایگریشنها به ترتیب شمارهگذاری میشوند، که این شمارهها از 001 شروع میشوند. هر عدد باید دارای سه رقم باشد و در دنباله نباید هیچ فاصلهای باشد. (این روش نامگذاری، قبل از کدایگنایتر 3.0 استفاده میگردید.)
- تایماستمپ (یا برچسب زمانی): مایگریشنها بر اساس تایماستمپ زمان ساختشان در فرمت YYYYMMDDHHIISS (برای مثال 20121031100537) شمارهگذاری میشوند. هنگامی که به صورت تیمی روی یک پروژه کار میکنید، این الگو از تداخل نامها جلوگیری میکند و الگوی ترجیح داده شده در کدایگنایتر 3.0 و ورژنهای بعدی آن است.)
با تغییر مقدار $config['migration_type']
در فایل application/config/migration.php، میتوانید سبک مورد نظر خود را انتخاب کنید.
صرفنظر از اینکه چه سبکی را برای استفاده انتخاب میکنید، پیشوند فایلهای مایگریشن شما، با یک اندراسکور و سپس یک نام توصیفی برای مایگریشن دنبال میشود. برای مثال:
- 001_add_blog.php شماره گذاری متوالی
- 20121031100537_add_blog.php شمارهگذاری بر اساس تایماستمپ
ساخت یک مایگریشن
این اولین مایگریشن یک سایت جدید که یک وبلاگ دارد، خواهد بود. تمام مایگریشنها در دایرکتوری application/migrations/ قرار میگیرند و نامهایی مانند 20121031100537_add_blog.php خواهند داشت.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Migration_Add_blog extends CI_Migration {
public function up()
{
$this->dbforge->add_field(array(
'blog_id' => array(
'type' => 'INT',
'constraint' => 5,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'blog_title' => array(
'type' => 'VARCHAR',
'constraint' => '100',
),
'blog_description' => array(
'type' => 'TEXT',
'null' => TRUE,
),
));
$this->dbforge->add_key('blog_id', TRUE);
$this->dbforge->create_table('blog');
}
public function down()
{
$this->dbforge->drop_table('blog');
}
}
سپس $config['migration_version'] = 20121031100537;
را در فایل application/config/migration.php مقداردهی کنید.
مثال نحوه استفاده
در این مثال، کدی ساده در application/controllers/Migrate.php قرار داده شده است تا اسکیما را آپدیت کنیم:
<?php
class Migrate extends CI_Controller
{
public function index()
{
$this->load->library('migration');
if ($this->migration->current() === FALSE)
{
show_error($this->migration->error_string());
}
}
}
تنظیمات سلیقهای مایگریشن
جدول زیر حاوی تمامی آپشنهای کانفیگ برای مایگریشنها است.
تنظیم | پیشفرض | آپشنها | توصیف |
---|---|---|---|
migration_enabled | FALSE | TRUE / FALSE | فعال یا غیرفعالسازی مایگریشنها |
migration_path | APPPATH.’migrations/’ | ندارد | مسیر پوشه مایگریشن شما |
migration_version | 0 | ندارد | ورژن جاری مایگریشن که دیتابیس شما از آن استفاده میکند |
migration_table | migrations | ندارد | نام تیبل برای ذخیرهسازی شماره ورژن اسکیمای جدول |
migration_auto_latest | FALSE | TRUE / FALSE | فعال یا غیرفعالسازی اجرای اتوماتیک مایگریشنها |
migration_type | ‘timestamp’ | ‘timestamp’ / ‘sequential’ | نوع مشخص کنندهی عددی که برای نامگذاری نام فایلهای مایگریشن استفاده میشود |
رفرنس کلاس
کلاسCI_Migration
current() |
|
مقدار بازگشتی | اگر مایگریشنی یافت نشود، TRUE برمیگرداند، در صورت موفقیت ورژن فعلی را به صورت استرینگ برمیگرداند و در صورت شکست FALSE برمیگرداند. |
نوع مقدار بازگشتی | mixed (بیش ازیک نوع) |
دستور Migrates up به ورژن فعلی اجرا میشود (بر اساس آنچه در $config['migration_version']
در application/config/migration.php ست شده باشد).
error_string() |
|
مقدار بازگشتی | پیامهای خطا |
نوع مقدار بازگشتی | استرینگ |
این فانکشن، خطاهای اتفاق افتاده در حین اجرای یک مایگریشن را به شکل استرینگ برمیگرداند.
find_migrations() |
|
مقدار بازگشتی | آرایهای از فایلهای مایگریشن |
نوع مقدار بازگشتی | آرایه |
آرایهای از نام فایلهای مایگریشن را برمیگرداند که در پراپرتی migration_path یافته است.
latest() |
|
مقدار بازگشتی | در صورت موفقیت استرینگ ورژن جاری و در صورت شکست FALSE برمیگرداند. |
نوع مقدار بازگشتی | mixed (بیش از یک نوع) |
نحوه کار این متد، خیلی شبیه به متد current()
است، اما به جای اینکه دنبال $config['migration_version']
، کلاس Migration
آخرین مایگریشن یافت شده در سیستم فایل را استفاده میکند.
version($target_version) |
|
پارامترها |
|
مقدار بازگشتی | اگر مایگریشنی یافت نشود، TRUE برمیگرداند، در صورت موفقیت ورژن فعلی را به صورت استرینگ برمیگرداند و در صورت شکست FALSE برمیگرداند. |
نوع مقدار بازگشتی | mixed (بیش ازیک نوع) |
متد Version میتواند برای بازگرداندن (roll back) تغییرات یا پریدن به ورژن مشخصی از مایگریشن استفاده شود. این متد مانند متد current()
کار میکند، اما $config['migration_version']
را نادیده میگیرد.
$this->migration->version(5);
سایر پستهای داکیومنت
- به کدایگنایتر خوش آمدید
- نصب
- بررسی اجمالی
- شروع به استفاده از کدایگنایتر
- کدایگنایتر در یک نگاه
- فیچرهای کدایگنایتر
- فلوچارت اپلیکیشن
- مدل ویو کنترلر
- اهداف طراحی و معماری
- خودآموز
- مشارکت در کدایگنایتر
- نوشتن مستندات کدایگنایتر در صف ترجمه
- گواهی مبدأ توسعه دهنده 1.1 در صف ترجمه
- مباحث کلی
- URLها در کدایگنایتر
- کنترلرها
- نامهای رزرو شده
- ویوها
- مدلها
- هلپرفانکشنها
- استفاده از لایبرریهای کدایگنایتر
- ساخت لایبرری
- استفاده از درایورهای کدایگنایتر
- ساخت درایور
- ساخت کلاسهای هسته سیستم
- ساخت کلاسهای کمکی
- هوکها - توسعه هسته فریمورک
- بارگذاری خودکار ریسورسها
- فانکشنهای عمومی
- فانکشنهای سازگاری
- مسیریابی URI
- هندل کردن خطاها
- کش کردن صفحات وب
- ارزیابی و تجزیه و تحلیل عملکرد اپلیکیشن
- اجرای کدایگنایتر به وسیله خط فرمان
- مدیریت چندین اپلیکیشن
- هندل کردن محیطهای چندگانه
- سینتکس جایگزین PHP برای فایلهای ویو
- Security در صف ترجمه
- راهنمای کدنویسی در PHP
- لایبرریها در صف ترجمه
- کلاس بنچمارک
- درایور کش در صف ترجمه
- Calendaring Class در صف ترجمه
- Shopping Cart Class در صف ترجمه
- Config Class در صف ترجمه
- Email Class در صف ترجمه
- Encrypt Class در صف ترجمه
- Encryption Library در صف ترجمه
- File Uploading Class در صف ترجمه
- Form Validation در صف ترجمه
- FTP Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Javascript Class در صف ترجمه
- کلاس زبان
- Loader Class در صف ترجمه
- کلاس مایگریشن
- Output Class در صف ترجمه
- Pagination Class در صف ترجمه
- Template Parser Class در صف ترجمه
- Security Class در صف ترجمه
- Session Library در صف ترجمه
- HTML Table Class در صف ترجمه
- Trackback Class در صف ترجمه
- کلاس تایپوگرافی در صف ترجمه
- Unit Testing Class در صف ترجمه
- URI Class در صف ترجمه
- User Agent Class در صف ترجمه
- XML-RPC and XML-RPC Server Classes در صف ترجمه
- کلاس انکود کردن آرشیو Zip در صف ترجمه
- رفرنس دیتابیس در صف ترجمه
- شروع سریع دیتابیس: کد نمونه
- پیکربندی دیتابیس در صف ترجمه
- Connecting to your Database در صف ترجمه
- Queries در صف ترجمه
- Generating Query Results در صف ترجمه
- Query Helper Methods در صف ترجمه
- Query Builder Class در صف ترجمه
- Transactions در صف ترجمه
- Database Metadata در صف ترجمه
- فراخوانی سفارشی فانکشن
- Database Caching Class در صف ترجمه
- Database Forge Class در صف ترجمه
- Database Utility Class در صف ترجمه
- DB Driver Reference در صف ترجمه
- هلپرفانکشنها
- هلپرفانکشن Array
- هلپرفانکشن CAPTCHA در صف ترجمه
- هلپرفانکشن Cookie
- Date Helper در صف ترجمه
- هلپرفانکشن Directory
- Download Helper در صف ترجمه
- Email Helper در صف ترجمه
- File Helper در صف ترجمه
- هلپرفانکشن Form در صف ترجمه
- HTML Helper در صف ترجمه
- Inflector Helper در صف ترجمه
- هلپرفانکشن Language
- هلپرفانکشن Number
- Path Helper در صف ترجمه
- Security Helper در صف ترجمه
- Smiley Helper در صف ترجمه
- هلپرفانکشن String
- Text Helper در صف ترجمه
- Typography Helper در صف ترجمه
- URL Helper در صف ترجمه
- XML Helper در صف ترجمه