ホームページ >PHPフレームワーク >Laravel >Laravelでテーブル構造を変更する方法

Laravelでテーブル構造を変更する方法

藏色散人
藏色散人オリジナル
2021-12-31 11:59:042328ブラウズ

laravel でテーブル構造を変更する方法: 1. マイグレーション ファイルを生成する; 2. コマンド「php職人 make:migration...」を実行する; 3. 「$table->text('images」を追加する) ')- >nullable()..." 以上です。

Laravelでテーブル構造を変更する方法

この記事の動作環境: Windows 7 システム、Laravel バージョン 5.7、Dell G3 コンピューター。

laravel でテーブル構造を変更するにはどうすればよいですか?

laraval 移行を使用してデータベース テーブル構造を変更する

SQL ファイルを使用して、データベース テーブル構造の変更を保存および追跡しています。ただし、SQL ファイルの使用には次のような欠点があります。

  • どの SQL ファイルが実行され、どの SQL ファイルが実行されていないかを判断することができません。 SQL ファイル名のプレフィックスとして日付が追加されますが、複数人で開発しており、オンライン データ テーブルの構造が長期間更新されていない場合、頭を悩ませることがよくあります

  • #SQL ファイルの実行はライブでは手間がかかります。十数個の SQL 変更ファイルに直面した場合、それらを 1 つずつ実行するのは非常に面倒です。

  • 複数の開発環境と運用環境の同期には、依然として時間と労力がかかります。たとえば、PC の開発マシンで変更を加えた場合、ラップトップの開発環境と同期する必要があるため、考えるのが面倒です。

これらの問題は、一連の移行を実行するよりもはるかに楽しいものではありません。

新しいフィールドの追加

たとえば、images フィールドを記事テーブルに追加したいと考えています。

最初に移行ファイルを生成する必要があります。コマンド

php artisan make:migration add_images_to_articles_table --table=articles

を実行すると、出力結果は

Created Migration: 2018_03_21_225819_add_images_to_articles_table

となり、対応するデータベース/migrations/ ディレクトリにファイルが自動的に生成されます。

database/migrations/2018_03_21_225819_add_images_to_articles_table.php

ファイル名の前に日付と時刻が付いていることがわかります。

public function up()
{
Schema::table('articles', function (Blueprint $table) {
$table->text('images');
});
}

公式ドキュメントに従って、画像フィールドを追加し、変更を保存します。コマンド

php artisan migrate

Output

Migrating: 2018_03_21_225819_add_images_to_articles_table
Migrated:  2018_03_21_225819_add_images_to_articles_table

を実行します。この時点で、データ テーブルの移行を見ると、追加のレコード行が見つかります。

Laravelでテーブル構造を変更する方法

次に、変更を運用環境に同期します。唯一の違いは、運用サーバーがコマンドを実行するかどうかを確認するメッセージを表示することです。

**************************************
*     Application In Production!     *
**************************************
 Do you really wish to run this command? (yes/no) [no]:
 > yes
Migrating: 2018_03_21_225819_add_images_to_articles_table
Migrated:  2018_03_21_225819_add_images_to_articles_table

フィールドの変更

この性急なリリースにより 500 件のエラーが発生しました

SQLSTATE[HY000]: General error: 1364 Field 'images' doesn't have a default value

必要なのは、新しい移行ファイルを作成して追加することだけです

$table->text('images')->nullable()->change();

オンラインで移行を再度実行して問題を解決してください。

関連する推奨事項:

最新の 5 つの Laravel ビデオ チュートリアル

以上がLaravelでテーブル構造を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。