ローカルにLaravelのプロジェクトを作成しページを表示する方法。思ってた以上に手軽だった、、
- composerのインストール
- laravelのインストール
- laravelサーバーの起動
- ディレクトリ構造
- ルーティングの追加
- ビューの作成とルーティングの変更
-
マイグレーションの作成
8. マイグレーションファイルの構造
9. テーブルにカラム追加 - DBにテーブルを作成(sqlite3)
- テーブルの確認
laravelによるページの表示までなら手順3で完了。3以降は補足。
## 1. composerのインストール [composerのインストール方法](https://qiita.com/yuta-> 38/items/ca900b5c84e04ff71832)を参照。
## 2. laravelのインストール
$ composer create-project laravel/laravel [プロジェクト名] --prefer-dist
指定したプロジェクト名でフォルダが作成される。
・--prefer-distオプション
高速ダウンロード用。
このオプションをつけると圧縮されていないファイルを優先してダウンロードする。また、すべてのVSC(バージョン管理ソフト)を取得しないので軽量となる。
## 3. laravelサーバーの起動
php artisan serve
$ php artisan serve
Starting Laravel development server: http://127.0.0.1:8000
表示されたURLにアクセス
http://127.0.0.1:8000
上記画面が表示され完了。
サーバーの終了はctrl + c。
### (補足)artisanとは? アルチザンとは職人の意味。 PHPではサーバーの起動やコントローラーを作成したりなど専門的な処理を実行してくれるため職人を意味する`artisan`を使っていると想定される。
## 4. ディレクトリ構造 作成したプロジェクトのディレクトリ構造は以下のようになる。
## 5. ルーティングの追加 新たに、usersというパスでページを表示できるようにする。
ルーティングか書かれている routes/web.phpを開く。
コードの最後に以下を追加。
Route::get('users', function()
{
return 'Users!';
});
これで、http://127.0.0.1:8000/users
にアクセスすると、Users!というテキストが表示される。
usersというルートが渡されたら、「Users!」を返すという意味。
![]() |
|---|
(補足)デフォルトのルート
Route::get('/', function () {
return view('welcome');
});
デフォルトで記載されている上記処理は、ルートパスへの要求がきたら、welcome.blade.phpというファイルを返すという意味。
拡張子.blade.phpはlaravelにおけるviewファイル。
## 6. ビューの作成とルーティングの変更 自分でビューファイル(.balde.php)を作成し表示してみる。
.balde.phpファイルの中で別の.balde.phpファイルを呼び出すことも可能。今回は、users.blade.php の中でlayout.blade.phpを呼び出してみる。
ビューファイルは、resources/viewsフォルダ配下に設置する。
<html>
<body>
<h1>Laravelクイックスタート</h1>
@yield('content')
</body>
</html>
@extends('layout')
@section('content')
Users!
@stop
@がつく記述をディレクティブとよび、HTMLと同時に記述することでphpを実行することができる。
・@extends('layout')
ビューの拡張。layout.blade.phpを呼び出す。
・@section('セクション名') 内容 @stop
セクションの作成。
引数内の変数に値を代入する処理。@yield('セクション名')で定義したセクションの内容を読み込むことができる。
セクションの終わりは@stopで指定(必須)。エイリアスである@endsectionでもOK。
作成したビューファイルを表示するようにルーティングを変更する。
先ほどのusesのルーティングの戻り値をview('ビューファイル名')とする。
Route::get('users', function()
{
return view('users');
});
以上で作成したビューファイルを表示できる。
![]() |
|---|
## 7. マイグレーションファイルの作成 Laravelで**DBを扱うために必要なマイグレーションファイル**を作成する。
laravelはマイグレーションファイルの内容を元にDB操作を行う。
マイグレーションファイルにはDBで使用するカラムの定義が入る。
・php artisan make:migration create_[テーブル名]_table
$ php artisan make:migration create_flights_table
Created Migration: 2021_01_12_055029_create_flights_table
実行すると、database/migrationsフォルダ配下に指定したテーブル名のマイグレーションファイルが作成される。
作成したマイグレーションファイル名はクラス名に直結する。
class CreateFlightsTable extends Migration
### create_と_tableの意味 ちなみに、先頭と末尾の`create_`と`_table`はなくてもマイグレーションファイルを作成できる。
$ php artisan make:migration test
Created Migration: 2021_01_12_060050_test
作成したファイルがマイグレーションファイルであることを明示的に示すためにcreate_テーブル名_tableとするのが一般的。
### マイグレーションファイルの構造 マイグレーションファイルには指定したテーブル名の**クラス**(移行クラスと呼ぶ)が作成され、中に**upとdownの2つのメソッド**が用意される。
・upメソッド:
DBにテーブルやカラムを追加するメソッド。
・downメソッド:
以前の状態に戻すメソッド。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateFlightsTable extends Migration
{
//マイグレーションの実行
public function up()
{
Schema::create('flights', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
//マイグレーションを戻す
public function down()
{
Schema::dropIfExists('flights');
}
}
### upメソッドの中身
public function up()
{
Schema::create('flights', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
Schemaファサードを使ってcreateメソッドを実行し、カラムにidとタイムスタンプをもつテーブルflightsを作成する処理となる。
・Blueprint
テーブルにカラムやインデックスを追加するために使用するインスタンス。
・$table
テーブルの名前が入った変数
#### ファサードとは ファサードとはクラスの中のメソッドをインスタンスを呼び出さずに実行できる機能。
使用するメリットはコードを単純化できること。
・use Illuminate\Support\Facades\ファサード名;
冒頭に記述してファサードを使えるようにする。
ファサードの本来の意味は「建物の正面」。人まとまりのプログラミングを建物とすると、その建物全てを用意せずとも、正面さえ用意すればそのプログラムが使えるようにすると言ったところ。
▼主なファサード
Schema以外にも、Route, Session, Request, Viewなどがある。
#### ヘルパー関数とファサードの違い ファサードと似た処理でヘルパー関数がある。 ヘルパー関数はファサードを更に縮めたコード。
▼ビューファイルの呼び出し
profile.blade.phpを呼び出す場合、以下2つは同じ処理になる。
・Viewファサードでmakeメソッドを使う
return View::make('profile');
・ヘルパー関数を使う
return view('profile');
ファサードを使うよりヘルパー関数を使う方がわかりやすい。
テーブルにカラム追加
Schemaファサードのcreateメソッドを使って、テーブルにカラムを追加することができる。
・$table->型('カラム名')->カラム修飾子()
public function up()
{
Schema::create('flights', function (Blueprint $table) {
$table->id();
$table->string('name')->unique();
$table->string('email')->nullable();
$table->integer('age');
$table->boolean('membership')->default(false);
$table->timestamps();
});
}
ユーザー情報用に、name, email, age, membeshipを追加。
必要に応じてカラム修飾子をつける。
カラム修飾子
指定したカラムに条件を追加する。
・nullable()
nullを許容する。
・default($value)
デフォルト値を指定する。
型とカラム修飾子はかなりの種類がある。一覧はlaravel公式ページを参考。
インデックス修飾子
カラム修飾子と似ている。型に条件を追加する。
主キーや重複の禁止を指定できる。
上記設定では、unique()が該当。
## 8. DBにテーブルを作成(sqlite3) laravelとDBを接続する。 簡易的なテストのためDBはsqlite3を使用。(macは標準インストール済み)
step1. .envファイルの変更
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
↓ 以下に変更
DB_CONNECTION=sqlite
### step2. database.sqliteの作成 database/database.sqliteを作成する。
プロジェクトのルートディレクトリで以下を実行。
$ touch database/database.sqlite
### step3. マイグレーションの実行
・php artisan migrate
作成したマイグレーションファイルをベースにDBにテーブルを作成する。
$ php artisan migrate:refresh
Rolling back: 2019_08_19_000000_create_failed_jobs_table
Rolled back: 2019_08_19_000000_create_failed_jobs_table (2.46ms)
Rolling back: 2014_10_12_100000_create_password_resets_table
Rolled back: 2014_10_12_100000_create_password_resets_table (0.98ms)
Rolling back: 2014_10_12_000000_create_users_table
Rolled back: 2014_10_12_000000_create_users_table (0.84ms)
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (1.82ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (1.36ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (1.36ms)
Migrating: 2021_01_12_074652_create_flights_table
Migrated: 2021_01_12_074652_create_flights_table (1.38ms)
以上でDBの作成が完了。
マイグレーションファイルを変更したとき
マイグレーションファイルを変更した場合は、refreshをつけて実行する。
・$ php artisan migrate:refresh
9. テーブルの確認
マイグレーションでDBに正しくテーブルが作成できたか確認する。
・sqlite> .table
# sqlite3を起動
$ sqlite3
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
# テーブル一覧を表示
sqlite> .table
failed_jobs password_resets users
migrations flights






