Post

LaravelでMysql接続する[MAC]

LaravelでMysql接続する[MAC]

Laravel環境でMysqlに接続する方法 [MAC環境]

dockerコンテナで起動したMysqlにLaravelから接続する手順を説明します。

事前準備

以下の環境が必要です:

1. MySQLデータベースの作成

1.1 MySQLコンテナへの接続

MySQLコンテナに接続するには以下のコマンドを実行します

1
docker exec -it <container_name> mysql -u root -p

mysql-connect

1.2 データベースの作成

1
CREATE DATABASE <database_name>;
1
USE <database_name>;

Createでテーブル作成、Useでデータベースを選択します。

mysql-connect

1.3 テーブルの作成

1
2
3
4
5
6
7
8
CREATE TABLE posts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    author VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

ID, 名前、メールアドレス、パスワード を保存するテーブルを作成します。

1.4 データ作成

1
2
3
INSERT INTO posts (title, content, author) VALUES
('First Post Title', 'This is the content of the first post.', 'Author1'),
('Second Post Title', 'This is the content of the second post.', 'Author2');

サンプルデータを作成します。

1
SELECT * FROM posts;

データが作成されたことを確認します。

2. LaravelプロジェクトでMysqlに接続する

2.1 .envファイルの設定

.envファイルに以下の設定を追加します。

1
2
3
4
5
6
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=<database_name>
DB_USERNAME=root
DB_PASSWORD=
  1. プロジェクトディレクトリへ移動します
  2. .env ファイルのDB設定を修正します:
    • DB_HOST: MySQLのホスト名を設定 (通常は127.0.0.1)
    • DB_PORT: MySQLのポート番号を設定 (通常は3306)
    • DB_DATABASE: MySQLで作成したデータベース名に変更
    • DB_USERNAME: MySQLのユーザー名を設定 (通常はroot)
    • DB_PASSWORD: 設定したMySQLパスワードに変更
  3. 設定を反映させるために以下のコマンドを実行します。
1
php artisan config:cache

2.2 マイグレーションの実行

1
php artisan migrate

3. データベースに接続できるか確認

3.1 モデルを作成

1
php artisan make:model Post

/app/Models/Post.phpが作成されました。

1
2
3
4
5
6
7
8
9
10
11
namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use HasFactory;

    protected $table = 'posts';
}

テーブル名を指定します。

3.2 コントローラーを作成

1
php artisan make:controller PostController

/app/Http/Controllers/PostController.phpが作成されました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Post;

class PostController extends Controller
{
    public function index()
    {
        $posts = Post::all();

        return response()->json($posts);
    }
}

3.3 ルーティングを設定

1
Route::get('/posts', [PostController::class, 'index']);

3.4 サーバーを起動

1
php artisan serve

4. Response確認

http://localhost:8000/api/posts にGetリクエストを送信します。

response

MySQLに接続できていることが確認できました。

This post is licensed under CC BY 4.0 by the author.