Table of Contents
Understanding Migration Files
Applying Migrations Step by Step
Rolling Back or Resetting Migrations
Managing Multiple Migration Paths
Home PHP Framework YII How do I apply migrations in Yii?

How do I apply migrations in Yii?

Aug 03, 2025 pm 01:47 PM

The main method to apply database migrations in Yii is using the built-in migration tool via the command line. 1. Migration files are PHP classes stored in the migrations folder with timestamp-based names, used to modify the database schema. 2. To apply all pending migrations, run yii migrate/up, optionally adding --interactive=0 to skip confirmation or --limit=1 to apply one at a time. 3. To roll back migrations, use yii migrate/down with an optional --limit flag. 4. For a clean reset, use yii migrate/down --limit=999 followed by yii migrate/up --limit=999, though this should be avoided in production. 5. When working with modules or multiple directories, specify a custom path using --migrationPath.

How do I apply migrations in Yii?

When you're working with Yii and need to apply database migrations, the main method is using Yii's built-in migration tool via the command line. It’s straightforward once you understand how the system organizes and runs migration files.

Understanding Migration Files

Before applying migrations, it helps to know what they are. Migration files in Yii are PHP classes that contain instructions for modifying your database schema—like creating tables, adding columns, or changing indexes.

These files are stored in the migrations folder of your application or module by default. Each migration file has a timestamp-based name (e.g., m230101_000001_create_table_user.php) so Yii can determine the correct order when applying them.

If you haven't created any yet, use this command to generate one:

yii migrate/create create_table_something

This gives you a template to fill in with your actual DB changes.

Applying Migrations Step by Step

Once you have your migration files ready, applying them is simple:

  • Make sure you're in your project root directory where the yii console script is located.
  • Run this command:
    yii migrate/up

Yii will show you a list of pending migrations and ask for confirmation. Type y and hit Enter to proceed.

You can also skip the confirmation prompt by adding --interactive=0:

yii migrate/up --interactive=0

By default, it applies all pending migrations. If you only want to apply one at a time, add the --limit=1 flag:

yii migrate/up --limit=1

This comes in handy during testing or when troubleshooting a specific migration.

Rolling Back or Resetting Migrations

Sometimes things go wrong or you need to undo changes. Yii lets you roll back migrations using:

yii migrate/down

Just like applying, you can limit how many steps to roll back:

yii migrate/down --limit=2

Be cautious though—rolling back deletes data if your migration includes dropping tables or columns.

For a clean start (not recommended on production), you can reset all migrations:

yii migrate/down --limit=999

Then reapply them:

yii migrate/up --limit=999

This is useful during development or when setting up a new environment from scratch.

Managing Multiple Migration Paths

If your app uses modules or multiple migration directories, you can specify which path to use:

yii migrate/up --migrationPath=@app/modules/user/migrations

This tells Yii to look in a custom location instead of the default @app/migrations.

It’s helpful when maintaining separate databases per module or managing shared components across projects.


That's basically how you handle migrations in Yii. It's not complicated once you get used to the commands and structure, but it's powerful enough for most real-world scenarios.

The above is the detailed content of How do I apply migrations in Yii?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1502
276
What are Yii asset bundles, and what is their purpose? What are Yii asset bundles, and what is their purpose? Jul 07, 2025 am 12:06 AM

YiiassetbundlesorganizeandmanagewebassetslikeCSS,JavaScript,andimagesinaYiiapplication.1.Theysimplifydependencymanagement,ensuringcorrectloadorder.2.Theypreventduplicateassetinclusion.3.Theyenableenvironment-specifichandlingsuchasminification.4.Theyp

How do I render a view from a controller? How do I render a view from a controller? Jul 07, 2025 am 12:09 AM

In the MVC framework, the mechanism for the controller to render views is based on the naming convention and allows explicit overwriting. If redirection is not explicitly indicated, the controller will automatically find a view file with the same name as the action for rendering. 1. Make sure that the view file exists and is named correctly. For example, the view path corresponding to the action show of the controller PostsController should be views/posts/show.html.erb or Views/Posts/Show.cshtml; 2. Use explicit rendering to specify different templates, such as render'custom_template' in Rails and view('posts.custom_template') in Laravel

How do I create a basic route in Yii? How do I create a basic route in Yii? Jul 09, 2025 am 01:15 AM

TocreateabasicrouteinYii,firstsetupacontrollerbyplacingitinthecontrollersdirectorywithpropernamingandclassdefinitionextendingyii\web\Controller.1)Createanactionwithinthecontrollerbydefiningapublicmethodstartingwith"action".2)ConfigureURLstr

Yii Developer Job Description: Key Responsibilities and Qualifications Yii Developer Job Description: Key Responsibilities and Qualifications Jul 11, 2025 am 12:13 AM

AYiideveloper'skeyresponsibilitiesincludedesigningandimplementingfeatures,ensuringapplicationsecurity,andoptimizingperformance.QualificationsneededareastronggraspofPHP,experiencewithfront-endtechnologies,databasemanagementskills,andproblem-solvingabi

How do I create custom actions in a Yii controller? How do I create custom actions in a Yii controller? Jul 12, 2025 am 12:35 AM

The method of creating custom operations in Yii is to define a common method starting with an action in the controller, optionally accept parameters; then process data, render views, or return JSON as needed; and finally ensure security through access control. The specific steps include: 1. Create a method prefixed with action; 2. Set the method to public; 3. Can receive URL parameters; 4. Process data such as querying the model, processing POST requests, redirecting, etc.; 5. Use AccessControl or manually checking permissions to restrict access. For example, actionProfile($id) can be accessed via /site/profile?id=123 and renders the user profile page. The best practice is

Yii Developer: Roles, Responsibilities, and Skills Required Yii Developer: Roles, Responsibilities, and Skills Required Jul 12, 2025 am 12:11 AM

AYiidevelopercraftswebapplicationsusingtheYiiframework,requiringskillsinPHP,Yii-specificknowledge,andwebdevelopmentlifecyclemanagement.Keyresponsibilitiesinclude:1)Writingefficientcodetooptimizeperformance,2)Prioritizingsecuritytoprotectapplications,

How do I use the ActiveRecord pattern in Yii? How do I use the ActiveRecord pattern in Yii? Jul 09, 2025 am 01:08 AM

TouseActiveRecordinYiieffectively,youcreateamodelclassforeachtableandinteractwiththedatabaseusingobject-orientedmethods.First,defineamodelclassextendingyii\db\ActiveRecordandspecifythecorrespondingtablenameviatableName().Youcangeneratemodelsautomatic

How do I log security events in Yii? How do I log security events in Yii? Jul 11, 2025 am 12:07 AM

Recording security events in Yii can be achieved by configuring log targets, triggering key event logs, considering database storage, and avoiding recording sensitive information. The specific steps are as follows: 1. Set a dedicated log target in the configuration file, such as FileTarget or DbTarget, and specify the classification as 'security'; 2. Use Yii::info() or Yii::warning() to record the log when a critical security event (such as login failure and password reset) occurs; 3. Optionally store the logs in the database for query and analysis, and you need to create a table first and configure the logTable parameters; 4. Avoid including sensitive data, such as passwords or tokens when recording context information, and you can use parameter replacement to add IP and username; 5

See all articles