目次
移行の基本
移行ファイルの命名規則
移行を前方および後方に実行します
ホームページ PHPフレームワーク Laravel Laravelフレームワークでのデータベースとデータベース移行の簡単な分析

Laravelフレームワークでのデータベースとデータベース移行の簡単な分析

Jul 31, 2018 pm 04:41 PM
Laravelフレームワーク

Laravel フレームワーク の開発方法はアジャイルで反復的であり、最初からすべての正しいコードを取得できるとは期待できません。代わりに、コードを作成し、テストし、エンド ユーザーと対話して理解を深めます。

仕事のためには、サポートとなる一連の実践が必要です。私たちは、Subversion、GIT、Mercurial などのバージョン管理ツールを使用してアプリケーションのソース コード ファイルを保存し、開発中にエラーを元に戻したり、変更を追跡したりできるようにします。

しかし、アプリケーションが変更されると、バージョン管理だけでは効果的に管理できない領域が生じます。開発が進むにつれて、Laravel アプリケーションのデータベース スキーマは進化し続けました。テーブルを追加し、列の名前を変更し、インデックスを削除するなどです。データベースの変更は、アプリケーション コードと連動して行われます。

データベース スキーマの変更を追跡するには、洗練された方法が必要です。通常、いくつかのアプローチがあります。

  • 開発チーム内で作業する場合、全員がスキーマの変更について把握する必要があります。

  • 実稼働サーバーにデプロイする場合は、データベース スキーマをアップグレードする堅牢な方法が必要です。

  • 複数のマシンで作業する場合は、すべてのデータベース スキーマの同期を保つ必要があります。

データベース スキーマとアプリケーション コードの同期を維持することは、アプリケーション開発者が従うべき厳密な規則や規律がなければ、これまで非常に面倒な作業でした。開発者 (またはデータベース管理者) は、必要なスキーマ変更を行います。ただし、アプリケーション コードが以前のバージョンにロールバックされた場合、データベース スキーマの変更を元に戻すことが困難になり、データベースのバージョン情報がアプリケーション コードのバージョン情報と不一致になります。

移行は、アプリケーションのデータ アーキテクチャを進化させるための Laravel の方法であり、変更を加えるたびにデータベースを削除したり再構築したりする必要はありません。削除と再構築がないため、変更を加えるたびにデータが失われることがありません。移行を実行する場合の唯一の変更は、前に進むか後ろに進むかに関係なく、データベース スキーマをあるバージョンから別のバージョンに移動することです。

Laravel の移行では、データベース スキーマを反復的に変更する手段が提供されます。SQL 操作を使用する必要はありませんが、PHP コードを使用できます。 Laravel スキーマ ジェネレーターを使用すると、データベース テーブルをすばやく作成し、列やインデックスを挿入できます。クリーンで表現力豊かな構文を使用してデータベースを操作します。 Laravel の移行はデータベースのバージョン管理であると考えるかもしれません。

データベースに依存しない方法で定義できる上位レベルのインターフェイスを定義することにより、データベース スキーマを作成および維持します。 PHP を使用してテーブルを作成し、列とインデックスを定義し、スキーマを一度作成して、サポートされているデータベース バックエンドに適用します。追加の利点として、Laravel はどの移行が適用され、どの移行がまだ適用される必要があるかを追跡します。

移行の基本

Laravel の移行は、アプリケーションの app/database/migrations ディレクトリにある単なる PHP ソース ファイルです。各ファイルには、基礎となるデータベースに対する一連の変更が含まれています。データベースへの変更は、データベース固有の SQL ではなく PHP コードで行われます。 PHP 移行コードは最終的に現在のデータベースに一致する DDL に変換されるため、データベース プラットフォームの切り替えが非常に簡単になります。移行コードは独自のディレクトリに保存されるため、他のプロジェクト コードと同様にバージョン管理に含める必要があります。 Laravel の移行は、Artisan ツールを使用してコマンドラインから明示的に実行されます。

移行ファイルの命名規則

Laravel の古いバージョンでは、移行されたファイルには 001_create_employees_table.php などのより単純な名前が付いています。 Laravel 3 (Laravel 4.1 および同様) では、名前の最初の部分がシーケンス番号から 2014_03_11_032903_create_employees_table.php のような長いものに変更される新しい命名規則が導入されました。ファイル名の形式は YYYY_MM_DD_HHMMSS_some_meaningful_name.php で、識別された UTC タイムスタンプの後に移行名が続くことを意味します。

新しい幅広い名前は、名前の競合を避けるのに役立ち、チームで作業している開発者の場合は、自分の移行を確認できます。

さらに、Laravel はファイルを順番に実行できるようにファイルのタイムスタンプを移行します。タイムスタンプ番号は、個々の移行バージョン番号が適用される順序でどの移行が適用されるかを定義するため、移行の鍵となります。

SQL スクリプトと同様に、移行は上から実行されるため、これらのファイルを実行する必要があります。順次実行により、テーブルが存在しないときに列を挿入しようとする可能性がなくなります。

移行ファイルを手動で作成することもできますが、Artisan ツールを使用して移行スクリプトを生成する方が簡単です (エラーが発生しにくくなります)。必要に応じて、これらのファイルを後で編集できます。

移行を前方および後方に実行します

Artisan ツールを使用してデータベースに移行します。 Laravel は、特定の移行セットの実行に要約される一連の職人的タスクを提供します。

[注意]artisan listを実行すると、artisanでサポートされているタスクのリストを表示できます。ほとんどのデータ移行関連タスクには、接頭辞 mitig: が付いています。

知っておくべき一般的なタスクをいくつか挙げます:

  • 移行:インストール
    おそらく最初に使用する移行関連の職人タスクは、移行:インストールです。 Laravel は内部的に特別なテーブルを使用して、どの移行が実行されたかを追跡します。このテーブルを作成するには、artisan コマンド ライン ツールを使用するだけです:
    $php 職人 移行:インストール

  • 移行
    アプリケーションのテーブルと列に追加する最新の更新をサポートするために、移行タスクを実行してデータベースを頻繁に更新します。 。最も基本的な形式では、まだ実行されていないすべての移行に対して up() メソッドのみが実行されます。そのような移行がない場合、移行は終了します。これらの移行は、移行された日付に基づいて実行されます。

  • 移行:ロールバック
    私は移行を書くときに時々間違いを犯します。すでに移行を実行している場合、移行を編集して再度移行を実行することはできません。Laravel はすでに移行が実行されていると想定しているため、artisan を再度実行すると、 移行しても何もしません。職人を使用する必要があります merge:rollback は移行をロールバックし、移行を編集してから、artisan を実行します。 正しいバージョンを実行するために移行してください。

一般に、既存の移行を編集することはお勧めできません。編集すると、あなたや同僚にとって追加の作業が必要になります。また、既存のバージョンの移行がマシンの実稼働環境ですでに実行されている場合は、頭痛の種になる可能性があります。代わりに、必要な変更を実行するには、新しい移行を作成する必要があります。

[注]職人 merge:rollback は最後の移行アプリケーションを削除します。 Laravel は移行「操作」全体に戻ります。したがって、最後の移行コマンドで 15 個の移行が実行された場合、15 個の移行はすべてロールバックされます。列またはテーブルを削除すると、データが失われることに注意してください。

maigrate:reset
すべての移行をロールバックします (すべてのテーブルとデータが削除されます)

maigrate:refresh
artisan merge:refresh タスクはデータベースを削除し、再作成し、現在のスキーマをロードします。これは、リセットを実行し、その後すべての移行を再実行するための便利なショートカットです。

maigrate:make
artisan merge:make コマンドが伝える Laravel で移行ファイルのスケルトン (実際には PHP ファイル) を作成し、app/database/migrations フォルダーに保存します。その後、このファイルを編集してテーブル/インデックスの定義を具体化できます。それでは、職人さん 移行コマンドが実行されると、artisan はこのファイルをクエリして生成します。 SQL DDL の実際のコード。

関連する推奨事項:

freetds を介して laravel5 を sqlserver に接続する方法 (コード)

以上がLaravelフレームワークでのデータベースとデータベース移行の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Laravelのコンポーネントを使用して再利用可能なUI要素を作成するにはどうすればよいですか? Laravelのコンポーネントを使用して再利用可能なUI要素を作成するにはどうすればよいですか? Mar 17, 2025 pm 02:47 PM

この記事では、コンポーネントを使用してLaravelで再利用可能なUI要素の作成とカスタマイズについて説明し、組織のベストプラクティスを提供し、パッケージを強化することを提案します。

Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか? Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか? Mar 17, 2025 pm 02:50 PM

この記事では、Laravelでカスタムブレードディレクティブの作成と使用を行い、テンプレートを強化します。ディレクティブの定義、テンプレートでそれらを使用し、大規模なプロジェクトでそれらを管理することをカバーし、改善されたコードの再利用性やRなどの利点を強調しています

Laravelでカスタム検証ルールを作成して使用するにはどうすればよいですか? Laravelでカスタム検証ルールを作成して使用するにはどうすればよいですか? Mar 17, 2025 pm 02:38 PM

この記事では、Laravelでカスタム検証ルールの作成と使用について説明し、それらを定義および実装する手順を提供します。再利用性や特異性などの利点を強調し、Laravelの検証システムを拡張する方法を提供します。

Laravelの職人コンソールを使用して一般的なタスクを自動化するにはどうすればよいですか? Laravelの職人コンソールを使用して一般的なタスクを自動化するにはどうすればよいですか? Mar 17, 2025 pm 02:39 PM

Laravelの職人コンソールは、コードの生成、移行の実行、スケジューリングなどのタスクを自動化します。重要なコマンドには、Make:Controller、Migrate、およびDB:Seedが含まれます。特定のニーズに合わせてカスタムコマンドを作成し、ワークフロー効率を向上させることができます。

Laravelのルーティング機能を使用して、SEOに優しいURLを作成するにはどうすればよいですか? Laravelのルーティング機能を使用して、SEOに優しいURLを作成するにはどうすればよいですか? Mar 17, 2025 pm 02:43 PM

この記事では、Laravelのルーティングを使用してSEOに優しいURLを作成し、Best Practice、Canonical URL、SEO最適化のツールをカバーします。ワード数:159

どちらが良いのか、DjangoとLaravel? どちらが良いのか、DjangoとLaravel? Mar 28, 2025 am 10:41 AM

DjangoとLaravelはどちらもフルスタックのフレームワークです。 DjangoはPython開発者や複雑なビジネスロジックに適していますが、LaravelはPHP開発者とエレガントな構文に適しています。 1.DjangoはPythonに基づいており、迅速な発展と高い並行性に適した「バッテリーコンプリート」哲学に従います。 2. LaravelはPHPに基づいており、開発者エクスペリエンスを強調しており、小規模から中規模のプロジェクトに適しています。

Laravelでデータベーストランザクションを使用してデータの一貫性を確保するにはどうすればよいですか? Laravelでデータベーストランザクションを使用してデータの一貫性を確保するにはどうすればよいですか? Mar 17, 2025 pm 02:37 PM

この記事では、Laravelでデータベーストランザクションを使用して、データの一貫性を維持し、DBファサードと雄弁なモデルを使用した方法の詳細、ベストプラクティス、例外処理、およびトランザクションの監視とデバッグのためのツールについて説明します。

アプリケーションのパフォーマンスを改善するために、Laravelにキャッシュを実装するにはどうすればよいですか? アプリケーションのパフォーマンスを改善するために、Laravelにキャッシュを実装するにはどうすればよいですか? Mar 17, 2025 pm 02:35 PM

この記事では、ララヴェルでキャッシュを実装して、パフォーマンスを高め、構成をカバーし、キャッシュファサード、キャッシュタグ、原子操作を使用して、パフォーマンスをカバーします。また、キャッシュ構成のベストプラクティスの概要を説明し、キャッシュするデータの種類を提案します

See all articles