🙌

Laravel基礎

2024/01/23に公開

環境

PHP 8.2.11
Composer 2.5.4
node 16.15.0
Mac
MAMP
VSCode

初期設定

Laravelインストール

作業フォルダを作成し、以下をターミナルに入力しLaravelをインストール

composer create-project laravel/laravel フォルダ名
//画面はzenn_laravel

作成後、作成したフォルダに移動

cd zenn_laravel

移動後、以下をターミナルに入力しサーバーを立ち上げ、動作確認

php aritsan serve


コントロールキー+C でサーバー停止


言語設定

config→app.php を開き、TimeZoneとlocaleをそれぞれ日本語圏に変更

'timezone' => 'Asia/Tokyo'
'locale' => 'ja'


デバッグバーインストール

ターミナルに以下を入力

composer require barryvdh/laravel-debugbar

入力後、サーバーを立ち上げ、デバッグバーが表示されていればOK

.envフォルダのAPP_DEBUG=true をfalseに変更することで非表示可能

APP_DEBUG=false    //デバッグバー非表示


データベース接続

phpMyAdminにデータベースを作成。
(画面はMac環境の為、MAMP→webstart→tool→phpMyAdmin)
新規作成し、データベース名を入力

作成後、権限→ユーザーアカウントを作成を選択し、ユーザー名、パスワードを入力し、画面下の実行を押すと、ユーザーを作成できる
画面は
データベース名 enn_laravel
ユーザー zenn_user
パスワード zenn123

作成後、VSCodeに戻り、.envファイルから、各項目を入力

DB_DATABASE=zenn_laravel
DB_USERNAME=zenn_user
DB_PASSWORD=zenn123

入力後、動作確認の為、ターミナルに以下のコード入力し、データベースにuserテーブルが作成できるか確認

php aritsan migrate

userテーブルなど各テーブルが作成できていれば、接続成功(エラーが出る時は、データベース名などをしっかり確認)


MVC作成

マイグレーションファイル作成し、テーブル作成

テーブル作成の為に、マイグレーションファイルを作成

ターミナルに以下を入力し、マイグレーションファイルを作成

php artisan make:migration create_テーブル名_table --create=テーブル名
//画面ではデーブル名をtasks テーブル名は複数形で設定すること

マイグレーションに成功後、databaseフォルダ内のmigrationsフォルダ内に、マイグレーションファイルが作成されているか確認

マイグレーションファイル内に、追加したいカラム名を設定

    public function up(): void
    {
        Schema::create('tasks', function (Blueprint $table) {
	//ここに追加したいカラムを入力していく
            $table->id();
            $table->string('title', 20);
            $table->string('detail', 200);
            $table->timestamps();
        });
    }

カラムには修飾子や型など様々設定できる(今回は割愛)

入力後、ターミナルに以下を入力し、テーブル作成

php artisan migrate

phpMyAdminを確認し、データベース内にtasksテーブルがあり、カラムも問題ないか確認


Model作成

ターミナルに以下を入力し、モデルファイルを作成

php artisan make:model モデル名
//画面はTaskで作成 原則、データベース名の単数形で作成

appフォルダ→Modelsフォルダ内に、モデルファイルが作成されているか確認


Controller作成

ターミナルに以下を入力し、コントローラーファイルを作成

php artisan make:controller コントローラ名 
//画面はTaskControllerで作成

appフォルダ→Httpフォルダ→Controllersフォルダ内にコントローラファイルが作成されているか確認

ファイル内で、モデルファイルを読み込みます

use App\Models\Task;

その後、モデルファイルからデータベース内の情報を得るコードと、ビューファイルを表示するコードを入力

   public function index(Request $request){
        $tasks = Task::all();
         //TaskModelから、tasksテーブルの情報を全て取得

        return view('tasks.index', compact('tasks'));
        //viewでtasks.indexを表示、第二引数のcompactで、取得したデータ($tasks)を 
	  tasks.indexに渡す
   }


View作成

resourcesフォルダ→viewsフォルダ内にtasksフォルダを作成し、index.blade.phpファイルを作成

確認用にaaaと入力

ルーティング設定

これまで作ったControllerとViewを繋ぐために、ルーティングを設定します
routesフォルダ→web.phpに以下を入力

Route::get('tasks/index', [App\Http\Controllers\TaskController::class, 'index']);

これで、ブラウザを開き、tasks/index を入力し、Viewファイルが表示されればOK

データベースの情報が渡っているか確認

まず、データベースにテストデータを入力します
phpMyAdminを開き、 挿入からテストデータを入力し、実行を押します

上手くいったら、もう1つデータを入力し、2つのデータが入ったことを確認します

次にviewファイルのindex.blade.phpに以下のコードを入力します

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <h1>TEST</h1>
    @foreach ($tasks as $task) //渡ってきた$tasksをforeach文で回す
        {{ $task->id }}               //それぞれの内容を取り出す
        {{ $task->title }}
        {{ $task->detail }}
    @endforeach
</body>

</html>

サーバーを立ち上げ、データベースの内容が2件とも表示されていればOK

Discussion