Laravel基礎
環境
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