Laravelデータベース移行方法の具体例
この記事では主にLaravelのデータベース移行方法を紹介していますが、編集者がとても良いと思ったので、参考として共有させていただきます。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。
移行の生成
--table および --create オプションを使用して、データ テーブルの名前、または移行の実行時に作成される新しいデータ テーブルの名前を指定できます。移行ファイルを事前生成するときに、指定したデータ テーブルにこれらのオプションを入力する必要があります:
php artisan make:migration create_users_table php artisan make:migration create_users_table --create=users php artisan make:migration add_votes_to_users_table --table=users
フィールドを追加
databasemigrations2017_07_30_133748_create_users_table.php
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUsersTable extends Migration { /** * 运行数据库迁移 * * @return void */ public function up() { // Schema::create('users',function (Blueprint $table){ $table->increments('id')->comment('递增ID'); $table->string('email',60)->comment('会员Email'); $table->string('phone',20)->comment('会员手机号'); $table->string('username',60)->comment('用户名'); $table->string('password',32)->comment('用户密码'); $table->char('rank',10)->comment('会员等级'); $table->unsignedSmallInteger('sex')->comment('性别;0保密;1男;2女'); $table->unsignedSmallInteger('status')->comment('用户状态'); $table->ipAddress('last_ip')->default('0.0.0.0')->comment('最后一次登录IP'); $table->timeTz('last_login')->comment('最后一次登录时间'); $table->timestamps(); }); } /** * 回滚数据库迁移 * * @return void */ public function down() { // Schema::drop('users'); } }
新しいデータ テーブルを作成するには、使用できますスキーマファサード作成メソッド。 create メソッドは 2 つのパラメーターを受け取ります。最初のパラメーターはデータ テーブルの名前で、2 番目のパラメーターはクロージャーです。このクロージャーは、新しいデータ テーブルの定義に使用されるブループリント オブジェクトを受け取ります
hasTable メソッドと hasColumn メソッドを簡単に使用できます。データテーブルまたはフィールドが存在するかどうかを確認するには:
if (Schema::hasTable('users')) { // } if (Schema::hasColumn('users', 'email')) { // }
デフォルト以外のデータベース接続でデータベース構造の操作を実行したい場合は、接続メソッドを使用できます:
Schema::connection('foo')->create('users', function (Blueprint $table) { $table->increments('id'); });
データベースを使用できます構造体 コンストラクターにエンジン属性を設定して、データテーブルのストレージエンジンを設定します:
Schema::create('users', function (Blueprint $table) { $table->engine = 'InnoDB'; $table->increments('id'); });
データテーブルの名前を変更して削除します
Schema::rename($from, $to);//重命名 //删除已存在的数据表 Schema::drop('users'); Schema::dropIfExists('users');
フィールドを作成します
Schema::table('users', function (Blueprint $table) { $table->string('email'); });
命令 | 描述 |
---|---|
$table->bigIncrements('id'); | 递增 ID(主键),相当于「UNSIGNED BIG INTEGER」型态。 |
$table->bigInteger('votes'); | 相当于 BIGINT 型态。 |
$table->binary('data'); | 相当于 BLOB 型态。 |
$table->boolean('confirmed'); | 相当于 BOOLEAN 型态。 |
$table->char('name', 4); | 相当于 CHAR 型态,并带有长度。 |
$table->date('created_at'); | 相当于 DATE 型态 |
$table->dateTime('created_at'); | 相当于 DATETIME 型态。 |
$table->dateTimeTz('created_at'); | DATETIME (带时区) 形态 |
$table->decimal('amount', 5, 2); | 相当于 DECIMAL 型态,并带有精度与基数。 |
$table->double('column', 15, 8); | 相当于 DOUBLE 型态,总共有 15 位数,在小数点后面有 8 位数。 |
$table->enum('choices', ['foo', 'bar']); | 相当于 ENUM 型态。 |
$table->float('amount', 8, 2); | 相当于 FLOAT 型态,总共有 8 位数,在小数点后面有 2 位数。 |
$table->increments('id'); | 递增的 ID (主键),使用相当于「UNSIGNED INTEGER」的型态。 |
$table->integer('votes'); | 相当于 INTEGER 型态。 |
$table->ipAddress('visitor'); | 相当于 IP 地址形态。 |
$table->json('options'); | 相当于 JSON 型态。 |
$table->jsonb('options'); | 相当于 JSONB 型态。 |
$table->longText('description'); | 相当于 LONGTEXT 型态。 |
$table->macAddress('device'); | 相当于 MAC 地址形态。 |
$table->mediumIncrements('id'); | 递增 ID (主键) ,相当于「UNSIGNED MEDIUM INTEGER」型态。 |
$table->mediumInteger('numbers'); | 相当于 MEDIUMINT 型态。 |
$table->mediumText('description'); | 相当于 MEDIUMTEXT 型态。 |
$table->morphs('taggable'); | 加入整数 taggable_id 与字符串 taggable_type。 |
$table->nullableMorphs('taggable'); | 与 morphs() 字段相同,但允许为NULL。 |
$table->nullableTimestamps(); | 与 timestamps() 相同,但允许为 NULL。 |
$table->rememberToken(); | 加入 remember_token 并使用 VARCHAR(100) NULL。 |
$table->smallIncrements('id'); | 递增 ID (主键) ,相当于「UNSIGNED SMALL INTEGER」型态。 |
$table->smallInteger('votes'); | 相当于 SMALLINT 型态。 |
$table->softDeletes(); | 加入 deleted_at 字段用于软删除操作。 |
$table->string('email'); | 相当于 VARCHAR 型态。 |
$table->string('name', 100); | 相当于 VARCHAR 型态,并带有长度。 |
$table->text('description'); | 相当于 TEXT 型态。 |
$table->time('sunrise'); | 相当于 TIME 型态。 |
$table->timeTz('sunrise'); | 相当于 TIME (带时区) 形态。 |
$table->tinyInteger('numbers'); | 相当于 TINYINT 型态。 |
$table->timestamp('added_on'); | 相当于 TIMESTAMP 型态。 |
$table->timestampTz('added_on'); | 相当于 TIMESTAMP (带时区) 形态。 |
$table->timestamps(); | 加入 created_at 和 updated_at 字段。 |
$table->timestampsTz(); | 加入 created_at and updated_at (带时区) 字段,并允许为NULL。 |
$table->unsignedBigInteger('votes'); | 相当于 Unsigned BIGINT 型态。 |
$table->unsignedInteger('votes'); | 相当于 Unsigned INT 型态。 |
$table->unsignedMediumInteger('votes'); | 相当于 Unsigned MEDIUMINT 型态。 |
$table->unsignedSmallInteger('votes'); | 相当于 Unsigned SMALLINT 型态。 |
$table->unsignedTinyInteger('votes'); | 相当于 Unsigned TINYINT 型态。 |
$table->uuid('id'); | 相当于 UUID 型态。 |
字段修饰
Schema::table('users', function (Blueprint $table) { $table->string('email')->nullable(); });
Modifier | Description |
---|---|
->after('column') | 将此字段放置在其它字段「之后」(仅限 MySQL) |
->comment('my comment') | 增加注释 |
->default($value) | 为此字段指定「默认」值 |
->first() | 将此字段放置在数据表的「首位」(仅限 MySQL) |
->nullable() | 此字段允许写入 NULL 值 |
->storedAs($expression) | 创建一个存储的生成字段 (仅限 MySQL) |
->unsigned() | 设置 integer 字段为 UNSIGNED |
->virtualAs($expression) | 创建一个虚拟的生成字段 (仅限 MySQL) |
字段更新
Schema::table('users', function (Blueprint $table) { $table->string('phone',20)->change(); $table->string('username',60)->->nullable()->change(); });
重命名字段
Schema::table('users', function (Blueprint $table) { $table->renameColumn('from', 'to'); });
字段移除
Schema::table('users', function (Blueprint $table) { $table->dropColumn(['last_ip', 'last_login']); });
在使用字段更新,重命名字段,字段移除之前,请务必在你的 composer.json文件require键名中添加< "doctrine/dbal": "^2.5">值。然后composer update进行更新或
composer require doctrine/dbal
创建索引
$table->string('email')->unique();
Command | Description |
---|---|
$table->primary('id'); | 加入主键。 |
$table->primary(['first', 'last']); | 加入复合键。 |
$table->unique('email'); | 加入唯一索引。 |
$table->unique('state', 'my_index_name'); | 自定义索引名称。 |
$table->unique(['first', 'last']); | 加入复合唯一键。 |
$table->index('state'); | 加入基本索引。 |
开启和关闭外键约束
Schema::enableForeignKeyConstraints(); Schema::disableForeignKeyConstraints();
运行迁移
php artisan migrate
在线上环境强制执行迁移
php artisan migrate --force
回滚迁移
若要回滚最后一次迁移,则可以使用 rollback 命令。此命令是对上一次执行的「批量」迁移回滚,其中可能包括多个迁移文件:
php artisan migrate:rollback
在 rollback 命令后加上 step 参数,你可以限制回滚迁移的个数。例如,下面的命令将会回滚最后的 5 个迁移。
php artisan migrate:rollback --step=5
migrate:reset 命令可以回滚应用程序中的所有迁移:
php artisan migrate:reset
使用单个命令来执行回滚或迁移
migrate:refresh 命令不仅会回滚数据库的所有迁移还会接着运行 migrate 命令。所以此命令可以有效的重新创建整个数据库:
php artisan migrate:refresh // 刷新数据库结构并执行数据填充 php artisan migrate:refresh --seed
使用 refresh 命令并加上 step 参数,你也可以限制执行回滚和再迁移的个数。比如,下面的命令会回滚并再迁移最后的 5 个迁移:
php artisan migrate:refresh --step=5
无法生成迁移文件
在 Laravel 项目中,由于测试,有时候用 PHP artisan make:migration create_xxx_table 创建数据库迁移。如果把创建的迁移文件 database/migrations/2017_07_30_133748_create_xxx_table.php 文件给删除了,再次执行 php artisan make:migration create_xxx_table 会报错:
复制代码 代码如下:
[ErrorException]
include(E:\laraver\vendor\composer/../../database/migrations/2017_07_30_133748_create_users_table.php): failed to open stream: No such file or directory
重新运行 composer update 又可以执行上面的命令了。
相关推荐:
以上がLaravelデータベース移行方法の具体例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

CraftCMSを使用してWebサイトを開発する場合、特にCSSやJavaScriptファイルを頻繁に更新する場合、リソースファイルのキャッシュ問題が発生することがよくあります。古いバージョンのファイルがブラウザによってキャッシュされ、ユーザーが最新の変更を表示しないようにすることがあります。この問題は、ユーザーエクスペリエンスに影響を与えるだけでなく、開発とデバッグの難しさを高めます。最近、プロジェクトで同様のトラブルに遭遇し、いくつかの調査の後、プラグインWiejeben/Craft-Laravel-Mixが見つかりました。

Laravelは、ユーザーモデル(Eloquentモデル)の定義、ログインフォームの作成(ブレードテンプレートエンジン)、ログインコントローラーの作成(認証\ログインコントローラーの継承)、ログイン要求の検証(Auth ::試行)の検証など、ユーザーログイン機能を実装するための包括的なAuthフレームワークを提供します。ヘッダー。さらに、AUTHフレームワークは、パスワードのリセット、電子メールの登録と検証などの機能も提供します。詳細については、Laravelのドキュメントを参照してください:https://laravel.com/doc

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

Laravelフレームワークを学びたいが、資源や経済的圧力に苦しんでいないのですか?この記事では、Laravelの無料学習を提供し、オンラインプラットフォーム、ドキュメント、コミュニティフォーラムなどのリソースを使用して、PHP開発の旅から習得するための堅実な基盤を築く方法を教えてくれます。

Oracleはデータベース会社だけでなく、クラウドコンピューティングとERPシステムのリーダーでもあります。 1。Oracleは、データベースからクラウドサービスおよびERPシステムへの包括的なソリューションを提供します。 2。Oraclecloudは、AWSとAzureに挑戦し、IAAS、PAAS、SAASサービスを提供します。 3. e-businesssuiteやfusionApplicationsなどのOracleのERPシステムは、企業がオペレーションを最適化するのに役立ちます。

Laravelフレームワークには、開発者のさまざまなニーズを満たすためにバージョン番号を簡単に表示するための組み込みの方法があります。この記事では、Composer Command Lineツールの使用、.ENVファイルへのアクセス、PHPコードを介したバージョン情報の取得など、これらの方法について説明します。これらの方法は、Laravelアプリケーションのバージョン化の維持と管理に不可欠です。

初心者向けのLaravel Frameworkバージョンの選択ガイドでは、この記事は、多くのバージョンの中で初心者が情報に基づいた選択を行うのを支援するように設計されたLaravelのバージョンの違いに分かれています。各リリースの主要な機能に焦点を当て、長所と短所を比較し、初心者がスキルレベルとプロジェクトの要件に基づいてLaravelの最も適切なバージョンを選択できるように便利なアドバイスを提供します。初心者の場合、Laravelの適切なバージョンを選択することは、学習曲線と全体的な開発経験に大きな影響を与える可能性があるため、重要です。
