


YII Framework framework uses YIIC to quickly create YII applications. Detailed explanation of migrate usage examples, yiicyii_PHP tutorial
YII Framework framework uses YIIC to quickly create YII applications. Detailed explanation of migrate usage examples, yiicyii
This article describes the YII Framework framework using YIIC to quickly create YII applications. Migrate usage examples. Share it with everyone for your reference, the details are as follows:
yii migrate
View help
/* /www/yii_dev/yii/framework# php yiic migrate help Error: Unknown action: help USAGE yiic migrate [action] [parameter] DESCRIPTION This command provides support for database migrations. The optional 'action' parameter specifies which specific migration task to perform. It can take these values: up, down, to, create, history, new, mark. If the 'action' parameter is not given, it defaults to 'up'. Each action takes different parameters. Their usage can be found in the following examples. EXAMPLES * yiic migrate Applies ALL new migrations. This is equivalent to 'yiic migrate to'. * yiic migrate create create_user_table Creates a new migration named 'create_user_table'. * yiic migrate up 3 Applies the next 3 new migrations. * yiic migrate down Reverts the last applied migration. * yiic migrate down 3 Reverts the last 3 applied migrations. * yiic migrate to 101129_185401 Migrates up or down to version 101129_185401. * yiic migrate mark 101129_185401 Modifies the migration history up or down to version 101129_185401. No actual migration will be performed. * yiic migrate history Shows all previously applied migration information. * yiic migrate history 10 Shows the last 10 applied migrations. * yiic migrate new Shows all new migrations. * yiic migrate new 10 Shows the next 10 migrations that have not been applied. */
As we develop the program, the structure of the database is constantly adjusted. In our development, we must ensure that the code and database library are synchronized. Because our application cannot be separated from the database. For example: During the development process, we often need to add a new table, or the products we put into operation later may need to add an index to a certain column. We must maintain consistency in data structures and code. If the code and database are out of sync, the entire system may not function properly. For this reason. Yii provides a database migration tool that can keep the code and database in sync. Facilitates database rollback and updates.
Functions as described. Mainly provides database migration function.
Command format
yiic migrate [action] [parameter]
The action parameter is used to specify which migration task to execute. Can be used instantly
up, down, to, create, history, new, mark. These commands
If there is no action parameter, the default is up
Parameter changes depending on the action.
Illustrations are given in the above example.
The official also gave detailed examples.
http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.migration#creating-migrations
No more details will be given here. Just refer to it when you need it.
Supplement: yii2.0 uses migrate to create background login
Create a new data table to complete the background login verification
For everyone to understand clearly, I will post the code directly
1. Use Migration to create table admin
consolemigrationsm130524_201442_init.php
use yii\db\Schema; use yii\db\Migration; class m130524_201442_init extends Migration { const TBL_NAME = '{{%admin}}'; public function safeUp() { $tableOptions = null; if ($this->db->driverName === 'mysql') { // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; } $this->createTable(self::TBL_NAME, [ 'id' => Schema::TYPE_PK, 'username' => Schema::TYPE_STRING . ' NOT NULL', 'auth_key' => Schema::TYPE_STRING . '(32) NOT NULL', 'password_hash' => Schema::TYPE_STRING . ' NOT NULL', //密码 'password_reset_token' => Schema::TYPE_STRING, 'email' => Schema::TYPE_STRING . ' NOT NULL', 'role' => Schema::TYPE_SMALLINT . ' NOT NULL DEFAULT 10', 'status' => Schema::TYPE_SMALLINT . ' NOT NULL DEFAULT 10', 'created_at' => Schema::TYPE_INTEGER . ' NOT NULL', 'updated_at' => Schema::TYPE_INTEGER . ' NOT NULL', ], $tableOptions); $this->createIndex('username', self::TBL_NAME, ['username'],true); $this->createIndex('email', self::TBL_NAME, ['email'],true); } public function safeDown() { $this->dropTable(self::TBL_NAME); } }
Use command line to create admin database
1. Use the command under win7:
In the project root directory, right-click and select User composer here (provided that the global composer is installed),
yii migrate
The data table admin is created successfully
2. The commands under Linux are the same (omitted here)
2. Use gii to create models
Here are some simple steps.
Note: Create the admin model under backend/models (where to put it depends on personal preference)
The code is as follows
namespace backend\models; use Yii; use yii\base\NotSupportedException; use yii\behaviors\TimestampBehavior; use yii\db\ActiveRecord; use yii\web\IdentityInterface; /** * This is the model class for table "{{%admin}}". * * @property integer $id * @property string $username * @property string $auth_key * @property string $password_hash * @property string $password_reset_token * @property string $email * @property integer $role * @property integer $status * @property integer $created_at * @property integer $updated_at */ class AgAdmin extends ActiveRecord implements IdentityInterface { const STATUS_DELETED = 0; const STATUS_ACTIVE = 10; const ROLE_USER = 10; const AUTH_KEY = '123456'; /** * @inheritdoc */ public static function tableName() { return '{{%admin}}'; } /** * @inheritdoc */ public function behaviors() { return [ TimestampBehavior::className(), ]; } /** * @inheritdoc */ public function rules() { return [ [['username', 'email',], 'required'], [['username', 'email'], 'string', 'max' => 255], [['username'], 'unique'], [['username'], 'match', 'pattern'=>'/^[a-z]\w*$/i'], [['email'], 'unique'], [['email'], 'email'], ['status', 'default', 'value' => self::STATUS_ACTIVE], ['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]], ['role', 'default', 'value' => self::ROLE_USER], ['auth_key', 'default', 'value' => self::AUTH_KEY], ['role', 'in', 'range' => [self::ROLE_USER]], ]; } /** * @inheritdoc */ public static function findIdentity($id) { return static::findOne(['id' => $id, 'status' => self::STATUS_ACTIVE]); } /** * @inheritdoc */ public static function findIdentityByAccessToken($token, $type = null) { return static::findOne(['access_token' => $token]); //throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.'); } /** * Finds user by username * * @param string $username * @return static|null */ public static function findByUsername($username) { return static::findOne(['username' => $username, 'status' => self::STATUS_ACTIVE]); } /** * Finds user by password reset token * * @param string $token password reset token * @return static|null */ public static function findByPasswordResetToken($token) { if (!static::isPasswordResetTokenValid($token)) { return null; } return static::findOne([ 'password_reset_token' => $token, 'status' => self::STATUS_ACTIVE, ]); } /** * Finds out if password reset token is valid * * @param string $token password reset token * @return boolean */ public static function isPasswordResetTokenValid($token) { if (empty($token)) { return false; } $expire = Yii::$app->params['user.passwordResetTokenExpire']; $parts = explode('_', $token); $timestamp = (int) end($parts); return $timestamp + $expire >= time(); } /** * @inheritdoc */ public function getId() { return $this->getPrimaryKey(); } /** * @inheritdoc */ public function getAuthKey() { return $this->auth_key; } /** * @inheritdoc */ public function validateAuthKey($authKey) { return $this->getAuthKey() === $authKey; } /** * Validates password * * @param string $password password to validate * @return boolean if password provided is valid for current user */ public function validatePassword($password) { return Yii::$app->security->validatePassword($password, $this->password_hash); } /** * Generates password hash from password and sets it to the model * * @param string $password */ public function setPassword($password) { $this->password_hash = Yii::$app->security->generatePasswordHash($password); } /** * Generates "remember me" authentication key */ public function generateAuthKey() { $this->auth_key = Yii::$app->security->generateRandomString(); } /** * Generates new password reset token */ public function generatePasswordResetToken() { $this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time(); } /** * Removes password reset token */ public function removePasswordResetToken() { $this->password_reset_token = null; } }
3. Use migrate to create a login account for the future
1. Consolecontrollers create InitController.php
/** * * @author chan <maclechan@qq.com> */ namespace console\controllers; use backend\models\Admin ; class InitController extends \yii\console\Controller { /** * Create init user */ public function actionAdmin() { echo "创建一个新用户 ...\n"; // 提示当前操作 $username = $this->prompt('User Name:'); // 接收用户名 $email = $this->prompt('Email:'); // 接收Email $password = $this->prompt('Password:'); // 接收密码 $model = new AgAdmin(); // 创建一个新用户 $model->username = $username; // 完成赋值 $model->email = $email; $model->password = $password; if (!$model->save()) // 保存新的用户 { foreach ($model->getErrors() as $error) // 如果保存失败,说明有错误,那就输出错误信息。 { foreach ($error as $e) { echo "$e\n"; } } return 1; // 命令行返回1表示有异常 } return 0; // 返回0表示一切OK } }
2. Use command:
In the project root directory, right-click and select User composer here (provided that the global composer is installed),
yii init/admin
At this point, open the data table and take a look. You already have the data.
4. Backend login verification
1. There is no need to change the actionLogin method in backendcontrollersSiteController.php
2. To copy commonmodelsLoginForm.php to backendmodels, just modify one word in the method getUser() in LoginForm.php, as follows
public function getUser() { if ($this->_user === false) { $this->_user = Admin::findByUsername($this->username); } return $this->_user; }
3. Just modify backendconfigmain.php
'user' => [ 'identityClass' => 'backend\models\Admin', 'enableAutoLogin' => true, ],
In addition, when making modifications, please be careful not to mess up the command space.
That’s it, it’s over.
Readers who are interested in more Yii-related content can check out the special topics on this site: "Introduction to Yii Framework and Summary of Common Techniques", "Summary of Excellent PHP Development Framework", "Basic Tutorial for Getting Started with Smarty Templates", "php Date and Time" Usage Summary", "php object-oriented programming introductory tutorial", "php string (string) usage summary", "php mysql database operation introductory tutorial" and "php common database operation skills summary"
I hope this article will be helpful to everyone’s PHP program design based on the Yii framework.
Articles you may be interested in:
- Detailed explanation of usage examples of Trait in Laravel
- Detailed explanation of the steps to register Facades in Laravel
- Laravel implements automatic constructor Method of Dependency Injection
- How Laravel uses Caching to cache data to reduce database query pressure
- Making APP interface (API) based on laravel
- Experience of learning PHP framework Laravel
- Get the previous and next data in Laravel
- Share the configuration file of running PHP framework Laravel in Nginx
- Yii uses the migrate command to execute sql statements
- Laravel executes the migrate command prompt: No such file or directory solution

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



.NET Framework 4 is required by developers and end users to run the latest versions of applications on Windows. However, while downloading and installing .NET Framework 4, many users complained that the installer stopped midway, displaying the following error message - " .NET Framework 4 has not been installed because Download failed with error code 0x800c0006 ". If you are also experiencing it while installing .NETFramework4 on your device then you are at the right place

Whenever your Windows 11 or Windows 10 PC has an upgrade or update issue, you will usually see an error code indicating the actual reason behind the failure. However, sometimes confusion can arise when an upgrade or update fails without an error code being displayed. With handy error codes, you know exactly where the problem is so you can try to fix it. But since no error code appears, it becomes challenging to identify the issue and resolve it. This will take up a lot of your time to simply find out the reason behind the error. In this case, you can try using a dedicated tool called SetupDiag provided by Microsoft that helps you easily identify the real reason behind the error.
![SCNotification has stopped working [5 steps to fix it]](https://img.php.cn/upload/article/000/887/227/168433050522031.png?x-oss-process=image/resize,m_fill,h_207,w_330)
As a Windows user, you are likely to encounter SCNotification has stopped working error every time you start your computer. SCNotification.exe is a Microsoft system notification file that crashes every time you start your PC due to permission errors and network failures. This error is also known by its problematic event name. So you might not see this as SCNotification having stopped working, but as bug clr20r3. In this article, we will explore all the steps you need to take to fix SCNotification has stopped working so that it doesn’t bother you again. What is SCNotification.e

Flask-Migrate: Using Python to migrate databases With the continuous development of web development, the importance of databases has become more and more prominent. During the development process, we need to modify and migrate data. However, if you modify it directly on the database, it may bring unpredictable risks. At this time, Flask-Migrate came into being. In this article, we will focus on the use of Flask-Migrate and how to migrate databases through Python. Fl

Microsoft Windows users who have installed Microsoft.NET version 4.5.2, 4.6, or 4.6.1 must install a newer version of the Microsoft Framework if they want Microsoft to support the framework through future product updates. According to Microsoft, all three frameworks will cease support on April 26, 2022. After the support date ends, the product will not receive "security fixes or technical support." Most home devices are kept up to date through Windows updates. These devices already have newer versions of frameworks installed, such as .NET Framework 4.8. Devices that are not updating automatically may

It's been a week since we talked about the new safe mode bug affecting users who installed KB5012643 for Windows 11. This pesky issue didn't appear on the list of known issues Microsoft posted on launch day, thus catching everyone by surprise. Well, just when you thought things couldn't get any worse, Microsoft drops another bomb for users who have installed this cumulative update. Windows 11 Build 22000.652 causes more problems So the tech company is warning Windows 11 users that they may experience problems launching and using some .NET Framework 3.5 applications. Sound familiar? But please don't be surprised

With the continuous development of cloud computing technology, data backup has become something that every enterprise must do. In this context, it is particularly important to develop a highly available cloud backup system. The PHP framework Yii is a powerful framework that can help developers quickly build high-performance web applications. The following will introduce how to use the Yii framework to develop a highly available cloud backup system. Designing the database model In the Yii framework, the database model is a very important part. Because the data backup system requires a lot of tables and relationships

As the demand for web applications continues to grow, developers have more and more choices in choosing development frameworks. Symfony and Yii2 are two popular PHP frameworks. They both have powerful functions and performance, but when faced with the need to develop large-scale web applications, which framework is more suitable? Next we will conduct a comparative analysis of Symphony and Yii2 to help you make a better choice. Basic Overview Symphony is an open source web application framework written in PHP and is built on
