LoginSignup
0
1

More than 3 years have passed since last update.

【ローカル環境】Laravelアプリ作ってローカルDB(MAMP)にテーブル作るまで

Last updated at Posted at 2020-09-22

Laravelでいろいろなハンズオン形式の練習をしていくにあたり、
アプリ作成からテーブル作成まで、毎回ちょっと調べるのが面倒になってきたのでまとめます。

前提環境/どんな方向け?

・mac OS 10.15(10.14や10.13でも大きな違いはなし)
・MAMPをmacにインストール済みであること。
・ターミナル操作がわからないこともないこと。
・Laravelはmacにインストール済みであること。
・composerも入れていること。

という感じで、しょっぱなからの説明ではなく、過去にlaravelをmampで構築されており、ローカル環境で新しくアプリを作る方向け(主に自分の備忘録)です。

手順

1.Laravelアプリを作る

まずはアプリ作成。「todoLife」というアプリを作る場合は下記の手順。
ターミナルで、

composer create-project "laravel/laravel=5.8.*" todoLife

※バージョン指定は任意です。不要な場合は「laravel/laravel」でokです。
ここでは5.8の中の最新版を指定してみます。

また、このコマンドを行うことで、「今いる場所」にフォルダ/プロジェクトを作ります。
例えばデスクトップに「todoLife」というフォルダを作り、その中にcdで移動して上記のコマンドを実行すると
desuktop/todoLife/todoLife (← laravelのアプリ)
という感じになっちゃいます。
ので、desktopに作りたい場合はデスクトップに移動して実行しましょう。
(この後すぐmamp内に移動しますが)

2.MAMP内に移動

作ったララベルプロジェクトをmampの中のhtdocsに移動しましょう。
具体的には下記のような配置となります。

Macintosh ハードディスク/Applications/MAMP/htdocs/プロジェクタフォルダ

phpデータをローカルのmampで表示、動作させるにはこの「htdocs」の中に保管している必要があります。

3.DBを作る

MAMPで予めDBを作っておきます。
開発環境ではあるので大体でもいいかもですが、アプリ名と同じにしているケースが多いです。

MAMPの中でnewから作成しましょう。
※照合順序は「utf8_general_ci」でokです。
01.png

4.テーブルを作る

手動でMAMP内で作ってもいいですが、ここではlarabelのマイグレーション機能で作ってみます。今回作るのはシンプルに「todo」のテーブル「todos」です。

※なお、laravelのプロジェクト > database > migrations の中にデフォルトで存在している

2014_10_12_000000_create_users_table.php
2014_10_12_100000_create_password_resets_table.php

は、ユーザーテーブルやパスワードリセットが不要ならば削除しても問題ないです。

マイグレーションとは?

マイグレーションを行うことにより、このmigrationsファイルの中の「up()」の処理を実施します。
この後マイグレーションファイルの中身を見ますが、これらのファイルのupでは、テーブルを作るという処理が書かれています。
そのため、デフォルトの状態でマイグレーションをすると、前述の既存の二つのファイルにより、「ユーザーテーブル」と、「パスワードリセットのテーブル」が作られる、ということになります。

今回はそのままにしておき、マイグレーションファイルを別途作ります。
作る方法は、ターミナルでプロジェクトフォルダのトップにいるときに

php artisan make:migration create_todos_table --create=todos

と実施します。
ここで中盤と最後にある「todos」が、作成するファイル名、テーブル名になります。
テーブル名は通常複数形として作成する必要があります。postなら「posts」などです。

次にmigrationsの中にできた記述を見てみましょう。こんな関数ができているはずです。

2020_xx_xx_123630_create_todos_table.php

class CreateTodosTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('todos', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('todos');
    }
}


up()が、migration実行時に作られるテーブルの情報、そして
down()がやっぱその処理をやめるときに巻き戻す(ロールバック時に)実行される処理です。

今回、各todosには題名と本文をつけたいので、こんな感じでtitle、bodyテーブルを作る記述を追加します。


    public function up()
    {
        Schema::create('todos', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title',50);//追加
            $table->text('body');//追加
            $table->timestamps();
        });
    }

それでは、下記の手順でマイグレートを実行します。

php artisan migrate

む。エラーとなりました。
スクリーンショット 2020-09-22 22.03.30.png

5.環境設定

DBとの接続設定をまだ行っていませんでした。
その辺の環境設定は.envファイルで行います。
.envはプロジェクトのトップディレクトリ直下に存在しています。
02.png
いじるのはこの辺。


DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=todoLife //アプリ名に変更
DB_USERNAME=root
DB_PASSWORD=root //パスワードを設定。mamp側でDBにログインするためのユーザーごとのid、パスワードを設定します。


config/app.php
config/database.php
というファイルも編集します!

//app.php
//タイムゾーンと言語設定を変更しておきましょう。
    'timezone' => 'Asia/Tokyo',
    'locale' => 'ja',
//database.php
//database名、ユーザーネーム、パスワード、unix_socketを修正します。

'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'todoLife'),//修正
            'username' => env('DB_USERNAME', 'root'),//修正
            'password' => env('DB_PASSWORD', 'root'),//修正
            'unix_socket' => env('DB_UNIX_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),//修正


6.もう一度マイグレーション

今度は成功しました!
03.png

mampを見てもちゃんとtodos、users、passwordresetテーブルがつくられています。
スクリーンショット 2020-09-22 22.23.54.png

終わり!

おまけ

マイグレーションしてなくても見れますが、プロジェクトフォルダでphp artisan serveして、
mampを起動しておけばlaravelの起動も確認できます!
スクリーンショット 2020-09-22 22.25.51.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1