初めてのLaravel ②。データベースの使い方

初めてのLaravel ②。データベースの使い方
この記事はこんな悩みを解決します
  • Laravelでのデータベースの使い方が知りたい
  • MySQLを使うのに便利なツールはないの?
  • よく使う抽出条件が知りたい

Laravelでプログラミングするときにサーバーに保存したり、サーバーからデータを取ってきたい時があると思います。ブログやメッセージアプリを作る時には必須の機能です。

今回はLaravelでデータベースの使用する方法について紹介します。

初めてのLaravel ②。データベースの使い方

データベースを使用する前に まずは.env ファイルを確認してみましょう。
色々書いてありますがデータベースに今回重要になる部分はDB_で始まるとこです。

DB_CONNECTION=mysql //データベースの種類
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=Training //使用するデータベースの名前
DB_USERNAME=root //ユーザーの名前
DB_PASSWORD= //パスワード

これらを適切に編集していきます。

では、Terminalを開いてデータベースを作っていきます。
まずはmysqlを起動してログインします。

mysql.server start
mysql -u root

下記のようなメッセージが出たら成功です。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.19 Homebrew

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

たまにうまくいかない時があるのでその時は下記の記事を確認してください。

まずはデータベースを作りましょう。

mysql> create database Training;
Query OK, 1 row affected (0.01 sec)

TablePlusの使い方

このままTerminalでMySQLで編集してもいいのですが、TablePlusを使うと素早く作業ができるのでおすすめです。

ダウンロードして開くと下記の画面になります。

下にあるcreate a new connectionをクリックします。
データベースの一覧が出てくるのでMySQLを選択してcreateをクリックします。

コネクションに必要な情報を記入していきます。

  • Name;localhost
  • User;root
  • Password;.envファイルで設定したもの
  • Database;.envファイルで設定したもの

入力したらTestします。緑色になればOKです。Connectをクリックしましょう。

artisanコマンドでテーブルを作ることもできますが、今回は手動での作り方を紹介します。まずは下にある「+」から新たなテーブルを作ります。

テーブル名を編集後、テーブルの構造を編集します。

  • +column;カラムの追加
  • column_name;カラムの名前(ダブルクリック、矢印で編集)
  • data_type;データタイプの設定(ダブルクリック、矢印で編集)

データタイプですがよく使うのは下記の通りです。

よく使うデータ型
  • INTEGER;整数
  • VARCHAR;文字
  • DATE;日付
  • BOOLEAN;真偽

今回はTEXT型のCommentカラムを追加しました。
編集が終わったら保存します。

次にデータを入れていきます。
Dataに切り替えてダブルクリックすると入力できるようになります。

今回はコメント1〜3の3つを入れました。
編集を終えたら保存します。

では、データベースからデータを取り出してみます。

class TrainingController extends Controller
{
    public function show($post){
    	$post = \DB::table('comment')->get(); //commentテーブルから全てのデータを取り出す
    	dd($post); //取り出したデータを表示

    	return view('hi', [
    	'post' => $post
    ]);
    }
}
Route::get('/hi/{post}', 'TrainingController@show');

これでtrainig.test/hi/111にアクセスしてみます。
dd()を使うと下記のように取り出したものが簡単に確認できます。

矢印を開いていくと予定通りデータが取れているのが分かります。

ビューへの埋め込み

では、ビューに埋め込んでいきましょう。

コントローラーを編集します。

class TrainingController extends Controller
{
    public function show($post){
    	$post = \DB::table('comment')->where('id', $post)->first(); 
    //ワイルドカードで渡って来た$postと同じidのデータを取り出します。

    	return view('hi', [
    	'post' => $post
    ]);
    }
}

ビューは下記のように編集します。

<body>
	<h1>hi</h1>
	<p> {{ $post->comment }} </p>
 //$postは配列ですのでidなのかcommentなのか指定します。
</body>

trainig.test/hi/1 にアクセスします。

予想通りになっています。

データの取り出しかたにはいくつもあるのですが、よく使うデータの抽出方法を紹介しておきます。

よく使うデータの抽出方法
  • first();最初のデータを取得
  • find();idを指定してデータを取得
  • select();カラムを指定
  • where();カラムから特定のデータのものを取得
  • orderBy();カラム名と昇順(asc)か降順(desc)かを指定して取得します。
  • count();件数を取得します
  • max();最大値を取得します
  • avg();平均値を取得します

これ以外を使いたい時はLaravelの公式マニュアルを参考にして見てください。
公式マニュアルはこちら

まとめ

今回はデータベースの使い方について紹介しました。

データベースが使えるようになると膨大な量の情報が扱えるようになります。アプリを作っていく上で必須の機能ですのでぜひ使って見てください。

TablePlusはとても使いやすいのでぜひダウンロードする事をお勧めします。かなりの時間が節約できます。

関連記事