【PHP】LaravelのDBとテーブルを作成する

PHP

【PHP】LaravelのDBとテーブルを作成する

2018年6月13日

この記事は、Laravel 入門者向けの ひとこと掲示板シリーズの記事になります。

 

 

Laravel で ひとこと掲示板の Web アプリを作ってみましょうという事で、前回の続きの続きになります。

Cloud 9 で Laravel の環境を作っていない方は、以下を参考に環境を準備してくださいね。

 

 

 

 

今回は、データベースを作り、テーブルを作って、実際にデータを入れてみます。

正直、Laravel の save メソッドには驚きました。データが無ければ新規で登録しますし、あれば更新するんですね。

SQL の Insert や Set を意識せずに使えるとは、凄いと思いました。

 

 

以降、コマンドでの入力が多いのですが、本環境では Cloud 9 を使っているので、Cloud 9 のコンソールから入力します。

以下の画像が参考になります。

 

 

 

では早速はじめましょう。

 

 

 

MySQL をインストールする

 

 

Cloud 9 でコマンドを入力し、MySQL をインストールします。(Apache が動作中であればControl 押しながら C を押して一旦止めます。)

 

 

 

 

phpMyAdmin をインストールする

 

 

Cloud 9 でコマンドを入力し、phpMyAdmin をインストールします。

 

 

 

 

データベースを作る

 

 

phpMyAdmin にログインして、データベースを作ります。

 

1. まず、コンソールで以下のように Apache を起動し、URL をクリックして開きます。

 

 

 

2. URL の後に /phpmyadmin/と入力して Enter を押します。(例:https://sampleapp-user.c9users.io/phpmyadmin/)

 

phpMyAdmin のインストール後に発行されたユーザー名でログインします。デフォルトでパスワードは空です。

 

 

 

3. 以下の手順で、データベースを作成します。照合順序の選択に気をつけてください。

 

 

 

4. データベースが作成されました。

 

 

 

 

カラムの文字列制限の設定

 

 

テーブルのカラムの文字数制限の設定をします。

これをしないと、migration の際にエラーがでてしまいます。

以下のように、app -> Providers 内の AppServiceProvier.php を開いて、設定を入力します。

 

  • use Illuminate\Support\Facades\Schema; を追加
  • Schema::defaultStringLength(191); を追加

 

 

 

 

 

 

テーブルを作る

 

 

テーブルの作成

 

 

Cloud 9 のコンソールでコマンドを入力し、テーブルを作ります。

 

 

 

 

テーブルのカラムの設定をする

 

 

以下のように、テーブルのカラム毎に設定をします。

 

① create メソッドは第一引数で指定した名前のテーブル'posts' を作ります。
第二引数に関数(無名関数)を使う。$table が作られた後に完了して呼び出されるようなイメージです。

② incrementsメソッドで、主キーをAuto Increment で発行します。

③ stringメソッドで title のカラムを作ります。( varchar を指定)

④ textメソッドで body のカラムを作ります。

⑤ timestamps メソッドで created_date, updated_date のカラムを作ります。

 

 

 

 

 

 

環境設定をする

 

 

bbs ディレクトリ直下にある環境設定の値が入っている .env ファイルを編集します。DB_DATABASE は mysql になります。

 

 

 

 

テーブルのカラム作成

 

マイグレーションをします。まだ意味がよく理解できていないので、引用しました。

 

マイグレーションとはデータベースのバージョンコントロールのような機能です。

アプリケーションデータベースのスキーマの更新をチームで簡単に共有できるようにしてくれます。

引用元:Laravel 5.5 データベース:マイグレーション

 

 

ここで使っているマイグレーションは、実際にはテーブルを作成しています。

Cloud 9 のコンソールでコマンドを入力します。

 

 

 

 

テーブルにデータを入れてみる

 

 

ここまでの過程で、既にテーブルは作成されましたので、試しにデータを入れてみます。

以下のような流れで進めます。

 

① php artisan tinker で、Laravelでプログラムを対話的に使うようにします。

② 名前空間である App の クラスの Post を New してインスタンスを作成します。

③ title(タイトル)と body(本文)を $post の title に代入します。

④ save メソッドでデータを入れます。(これを実行してはじめてテーブルに書き込まれます。)

 

 

 

phpMyAdmin を見ると、データが作成されている事が分かります。

 

 

 

 

テーブルにデータを更新してみる

 

 

データが作成されましたが、更に title だけデータを入れたらどうなるのでしょうか。

私の想定では、id が 1 増えて、新規にデータが増えるのかと思いましたが、そうでは無いのです。

指定したカラムのデータだけが更新される事が分かりました。

既にデータがある場合は、新規で作らずに更新するという事を Model のほうで処理しているようです。

 

 

 

title と updated_at だけが更新されているのが分かります。

 

 

 

 

いかがでしょうか。これで、データベースにテーブルを作成し、実際にデータを入れる事ができました。

 

 

では最後までお読みいただきありがとうございました!

 

 

以下の記事をクリックして次に進みましょう!

 

 

 

おすすめの本はこちら ↓↓↓

 

  • この記事を書いた人

そーまん

セキュリティエンジニアやってます。
ブログ歴3年。PVは月15万PV程度。
趣味はボクシング、筋トレ、登山です。
穏やかで人見知りな性格です。

人気記事

1

こんにちは!そーまんです。 今回は、PC に適用されている GPO を確認する方法について書きました。 本題に入る前に、一応参考までにGPOの適用タイミングについての記事をここに貼りましたので、必要に ...

2

こんにちは!そーまんです。 今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは前置きからです。 まずはじめに 組織では PC のラ ...

3

こんにちは!そーまんです。 今回は、グループポリシー (GPO) を使って、特定のコンピューターに対して、ドメインユーザーに ローカル管理者権限 (以下は特権と記載) を付与する方法について書きました ...

4

こんにちは!そーまんです。 今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 Windows 10 の検証環境をいじってたらサイン ...

5

こんにちは!そーまんです。 今回は、ユーザープロファイルを削除する方法について書いてみました。 企業の場合よくあることですが、1 台の PC を共有 PC として複数人で使ったり、また余り無いかもしれ ...

6

こんにちは!SE ブログの相馬です。       今回は、繰り返し文について書いてみました。PowerShell では他のプログラミング言語同様、繰り返し処理を行うことが ...

7

コマンドを使って CPU とメモリの使用率をデータで取得してみましたので、例えば PC のトラブルシューティングで問題を再現させる際にデータを取得しておくと、原因の特定に役立つ場合があるかと思います。

8

既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

9

企業で多くの GPO が適用されている環境では、PC に GPO が適用されなかったりする問題が発生する場合があるかと思います。その中でも、コンピューターの構成またはユーザーの構成のどちらかで、...

10

こんにちは!そーまんです。 今回は、Windows Server 2019 で NTP サーバーと同期する方法について書きました。 NTP サーバーの必要性や時刻同期の重要性を理解することは社内のシス ...

-PHP
-,