DOCKERでPHP+DB+LARAVELを構成してみる(前回の続き)

DockerでPHP+DB+Laravelを構成してみる | 自分、ぼっちですが何か? (taki-lab.site)

前回までできていればDockerコンテナを立ち上げられるはず。

VSCodeを立ち上げて左下のボタンから「Reopen in Container」をクリック。

VSCodeのプロンプトを開くとDocker内のプロンプトになっていると思うので、これからLaravelのセットアップを行います。

> composer create-project laravel/laravel sample --prefer-dist

DBの設定を行います。

.envの編集

DB_CONNECTION=mysql
DB_HOST=laravel1_db
DB_PORT=3306
DB_DATABASE=my
DB_USERNAME=my
DB_PASSWORD=my

config/logging.phpの編集

    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['single', 'stderr'],
            'ignore_exceptions' => false,
        ],

モデルの作成

> php artisan make:model Book

コントローラーの作成

> php artisan make:controller BookController

app/Http/Controllers/BookController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use App\Models\Book;

class BookController extends Controller
{
    //
    public function index()
    {
        $data = [
            'books' => Book::all()
        ];

        Log::debug('デバッグ用。$dataの内容です。');
        Log::debug($data);

        return view('book.index', $data);
    }
}

ビューの作成

resources/views/book/index.blade.php

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charaset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
  </head>
  <body>
    <table border="1">
      @foreach($books as $book)
      <tr>
        <td>{{ $book->id }}</td>
        <td>{{ $book->title }}</td>
        <td>{{ $book->insert_timestamp }}</td>
      </tr>
      @endforeach
    </table>
  </body>
</html>

ルーティングの設定

routes/web.php

Route::get('/books', 'App\Http\Controllers\BookController@index');

xdebugのエラー対策

app/Http/Middleware/EncryptCookies.php

<?php

namespace App\Http\Middleware;

use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;

class EncryptCookies extends Middleware
{
    /**
     * The names of the cookies that should not be encrypted.
     *
     * @var array<int, string>
     */
    protected $except = [
        'XDEBUG_SESSION'
    ];
}

動作確認

> php artisan serve

ブラウザでhttp://172.0.0.1:8001/bookへアクセスする。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください