【Laravel6.0】データベースへのアクセスから操作方法まで(マイグレーションなど)

Laravelでアプリを作り始める時に、データベースを用意したあと、次に何をしたらいいか、どうやってデータベースにアクセスしたらいいか、すぐ忘れるので、ここにメモしておきます。

はじめに

前提

・データベースの準備ができている。
(データベースの作成と.envファイルの設定など)
・Laravel6.0、Eloquent

データベース操作の流れ

routes → Controller → model → データベース
                     ↓
      Controller ← model ← データベース
        ↓
      Controller → views(Bladeテンプレート)

上記の図のように、「Controller」から「データベース」を操作する際、間に「model」を挟みます。

今回は、
・テーブルの作成
・モデルの作成
・コントローラーの作成
の順で書いていきます。

テーブルの作成

まず、マイグレーションファイルという、テーブルの仕様などが書かれたスクリプトファイルを用意し、それを実行することで、テーブルを作成します。

マイグレーションファイルの作成

Laravelでは、マイグレーションファイルの雛形ファイルを作るコマンドが用意されています。

例えば、membersというテーブルを作りたい時は、

とすると、
「2020_01_31_150953_create_members_table.php」のように、先頭に作成日が入ったファイルが作成されます。
(database/migrations/以下にできます)

ファイル名のルール
・「create_{テーブル名}_table」のような形式にする。
・テーブル名は複数形にする。(あとで説明あります)

マイグレーションファイルの編集

できた雛形ファイルの中身は以下の通り。

例えば、以下のようにカラムを追加します。

カラムタイプの指定の仕方については、結構たくさん種類があるので、詳しくは公式ページを参照してください。

マイグレーション実行

マイグレーションファイルができたら、以下のコマンドで実行。

これで、エラーがなければ、テーブルが作成されているはずです。

モデルの作成

次に、モデルファイルの作成をします。こちらも雛形作成コマンドが用意されています。

modelファイル作成

ファイル名のルール
・テーブル名の単数系にする。

例えば、「members」という名前のテーブルを操作するmodelファイル名は、「Member」という事になります。つまり、テーブル名は常に複数形で作成しておくのが良さそうです。

実行すると、「app」内に「Member.php」という雛形ファイルが作成されます。
中身は、以下の通り。

modelファイルの編集

とりあえずは、そのままでOK。
必要な場合だけ中身を書きます。

コントローラーの作成

続いて、コントローラーファイルも作成します。こちらも雛形を作成するコマンドがあります。

Controllerファイルの作成

すると、以下のような内容のファイルが作成されます。
(app/Http/Controllersの中に作成されます)

今回は、このControllerファイルの中にデータベース操作のスクリプトを書いてみます。

Memberモデルを使うために以下を追記します。

データベースの操作

今回は、Eloquentを使った操作方法です。

データの取得

すべて取得

例えば、「members」テーブルから、すべてのデータを取得して、Viewsの「list.blade.php」に渡す場合。

主キーを指定して取得

条件を指定して取得

データの挿入

新規

例えば、「members」テーブルに、新しいレコードを挿入する場合。

更新

更新先の主キーを指定して更新する場合。

レコードの削除

レコードを削除する場合。

まとめ

以上、テーブル作成から操作まででした。
テーブルの操作については、他に様々な方法があります。また機会があったらまとめてみたいと思います。